이렇게 선언 할 때 클래스 필드를 초기화해야합니까?
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 ()에서 빈 컬렉션을 초기화하는 많은 예제가 있으므로 이유가 있다고 생각합니다.