Чи слід ініціалізувати поля класу при такому оголошенні?
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 (). Однак у поширених запитань JUnit є багато прикладів, які ініціалізують порожню колекцію в setUp (), тому я вважаю, що повинна бути причина.