Czy powinienem zainicjować pola klas przy takiej deklaracji?
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
}
}
Lub w setUp () w ten sposób?
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
}
}
Zwykle używam pierwszego formularza, ponieważ jest bardziej zwięzły i pozwala mi używać końcowych pól. Jeśli nie muszę używać metody setUp () do konfiguracji, czy nadal powinienem jej używać i dlaczego?
Wyjaśnienie:
JUnit utworzy instancję klasy testowej raz na metodę testową. Oznacza to, list
że zostanie utworzony raz na test, niezależnie od tego, gdzie to zadeklaruję. Oznacza to również, że między testami nie ma zależności czasowych. Wygląda więc na to, że używanie setUp () nie ma żadnych zalet. Jednak JUnit FAQ zawiera wiele przykładów, które inicjują pustą kolekcję w setUp (), więc myślę, że musi być jakiś powód.