Следует ли инициализировать поля класса при таком объявлении?
public class SomeTest extends TestCase
{
private final List list = new ArrayList();
public void testPopulateList()
{
// Add stuff to the list
// Assert the list contains what I expect
}
}
Или в setUp () вот так?
public class SomeTest extends TestCase
{
private List list;
@Override
protected void setUp() throws Exception
{
super.setUp();
this.list = new ArrayList();
}
public void testPopulateList()
{
// Add stuff to the list
// Assert the list contains what I expect
}
}
Я предпочитаю использовать первую форму, потому что она более краткая и позволяет мне использовать поля final. Если мне не нужно использовать метод setUp () для настройки, следует ли мне его использовать и почему?
Уточнение:
JUnit будет создавать экземпляр тестового класса один раз для каждого тестового метода. Это означает, list
что будет создаваться один раз за тест, независимо от того, где я это объявляю. Это также означает, что между тестами нет временных зависимостей. Похоже, что в использовании setUp () нет никаких преимуществ. Однако в JUnit FAQ есть много примеров, которые инициализируют пустую коллекцию в setUp (), поэтому я полагаю, что для этого должна быть причина.