このような宣言時にクラスフィールドを初期化する必要がありますか?
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は、テストメソッドごとに1回、テストクラスをインスタンス化します。つまりlist
、どこで宣言したかに関係なく、テストごとに1回作成されます。また、テスト間に一時的な依存関係がないことも意味します。したがって、setUp()を使用する利点はないようです。ただし、JUnit FAQにはsetUp()で空のコレクションを初期化する多くの例があるので、理由があるに違いないと思います。