본문 바로가기

Spring

AbstractDependencyInjectionSpringContextTests를 사용한 테스트 케이스


앞에 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);
 }



Juni4를 사용한 테스트 케이스와 대동소이하다..

getConfigLocation 메서드에서 설정 XML을 읽어들여서 그곳에 설정되어 있는대로
POJO 클래스들을 생성하고 Injection 하는 듯 하다..
(BeanFactory가 사용되지 않았을라나...)

인젝션이 제대로 되었는지도 체크하고
이렇게 하면 Junit 라이브러를 사용하지 않고 spring-test.jar 를 활용해서
테스트 케이스를 작성 할 수 있다.

만약 , Injection 되는 부분이.. 하나의 인터페이스로부터 구현한 클래스가 여러개 있을 경우에는
@setAutowireMode(AUTOWIRE_BY_NAME); 어노테이션을 활용해서
설정을 바꿀 수 있다..