Spring의 Test API에서 setUp과 tearDown
질문 : setUp() 와 tearDown() 메소드가 final로 되어 있는 테스트 클래스들이 대부분인데요. 그럼 Spring의 Test API를 사용할 때는 JUnit에서 각 테스트를 위해 매번 세팅하거나 자원을 돌려줘야 할 땐 어떻게 하나요??
답변 :
이 아래로 더 있을지도 모르겠지만 이 중에서 AbstractSpringContextTests 요거 부터 보겠습니다.
@Override
protected ConfigurableApplicationContext loadContext(Object arg0) throws Exception {
throw new UnsupportedOperationException();
}
@Override
protected void setUp() throws Exception {
throw new UnsupportedOperationException();
}
@Override
protected void tearDown() throws Exception {
throw new UnsupportedOperationException();
}
}
여기서는 JUnit의 setUp과 tearDown을 재정의 하여 사용할 수 있습니다.
그럼 한 단계 아래로 가서 AbstractSingleSpringContextTests를 보겠습니다. 어랏.. 여기서 부터는 위에서 사용한 setUp과 tearDown을 사용할 수 없습니다. final로 정의해 뒀네요.
어라.. "그럼 우리는 무얼 사용해야 되죠~?" 위 그림에 보이는 onSetUp()과 onTearDown()을 사용하면 됩니다.
@Override
protected void onSetUp() throws Exception {
throw new UnsupportedOperationException();
}
@Override
protected void onTearDown() throws Exception {
throw new UnsupportedOperationException();
}
}
따라서 AbstractSingleSpringContextTests 이 클래스 하위에 있는 테스트 클레스들은 전부 위의 메소드들을 사용해야겠군요~
위 가정에 해당하는 증명은 AbstractSingleSpringContextTests 클레스에 있는 소스코드 일부로 할 수 있습니다.
this.applicationContext = getContext(contextKey());
prepareTestInstance();
onSetUp();
}