앞에 Junit을 사용한 TestCase를 보고
기선님의 블로그에 갔다가 또다른 테스트 케이스 형식을 보고
한번 똑같은 테스트 케이스를 위 클래스를 사용해서 작성해 보았다.
public class BaseControllerTestOther extends AbstractDependencyInjectionSpringContextTests {
Log logger = LogFactory.getLog(BaseControllerTestOther.class);
@Override
protected String[] getConfigLocations() {
return new String[] {"classpath:actions/action-config.xml","classpath:services/serviceContext-sample.xml"};
}
private BaseController baseController;
public void setBaseController (BaseController bc) {
this.baseController = bc;
}
public void testDi() throws Exception {
assertNotNull(baseController);
}
public void testDo() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setParameter("keyword", "나이키");
String result = baseController.search(request, response);
assertEquals("나이키", result);
}
Log logger = LogFactory.getLog(BaseControllerTestOther.class);
@Override
protected String[] getConfigLocations() {
return new String[] {"classpath:actions/action-config.xml","classpath:services/serviceContext-sample.xml"};
}
private BaseController baseController;
public void setBaseController (BaseController bc) {
this.baseController = bc;
}
public void testDi() throws Exception {
assertNotNull(baseController);
}
public void testDo() throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setParameter("keyword", "나이키");
String result = baseController.search(request, response);
assertEquals("나이키", result);
}
Juni4를 사용한 테스트 케이스와 대동소이하다..
getConfigLocation 메서드에서 설정 XML을 읽어들여서 그곳에 설정되어 있는대로
POJO 클래스들을 생성하고 Injection 하는 듯 하다..
(BeanFactory가 사용되지 않았을라나...)
인젝션이 제대로 되었는지도 체크하고
이렇게 하면 Junit 라이브러를 사용하지 않고 spring-test.jar 를 활용해서
테스트 케이스를 작성 할 수 있다.
만약 , Injection 되는 부분이.. 하나의 인터페이스로부터 구현한 클래스가 여러개 있을 경우에는
@setAutowireMode(AUTOWIRE_BY_NAME); 어노테이션을 활용해서
설정을 바꿀 수 있다..