Должен ли я инициализировать поля класса в объявлении вроде этого?
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
}
}
Я использую первую форму, потому что она более краткий и позволяет использовать конечные поля. Если мне не нужно использовать метод setUp() для настройки, должен ли я использовать его и почему?
Разъяснение:
JUnit будет создавать экземпляр тестового класса один раз для каждого тестового метода. Это означает, что list
будет создаваться один раз за тест независимо от того, где я его объявляю. Это также означает отсутствие временных зависимостей между тестами. Поэтому кажется, что нет никаких преимуществ при использовании setUp(). Однако в FAQ JUnit есть много примеров, которые инициализируют пустую коллекцию в setUp(), поэтому я считаю, что должна быть причина.