我应该在这样的声明中初始化类字段吗?
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 FAQ中有许多示例可以在setUp()中初始化一个空集合,因此我认为一定有原因。