출처 : http://toby.epril.com/?p=980

DispatcherServlet을 그냥 아무 생각없이 사용했는데...
이런 깊은 뜻이 있었구나

DispatcherServlet.properties에 담긴 기본 전략들. 아무런 MVC설정을 안해줘도 이만큼이 자동으로 적용되 돌아간다는 사실에...그러니 그냥 아무생각없이 써도 돌아갔던게야. 전략이 여러 개 인 것들은 이 중에 하나를 명시적으로 빈으로 설정해주면 나머지는 반영 안되다고 한다.

org.springframework.web.servlet.LocaleResolver= org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver

org.springframework.web.servlet.ThemeResolver= org.springframework.web.servlet.theme.FixedThemeResolver

org.springframework.web.servlet.HandlerMapping= org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

org.springframework.web.servlet.HandlerAdapter= org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

org.springframework.web.servlet.HandlerExceptionResolver= org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
    org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

org.springframework.web.servlet.RequestToViewNameTranslator= org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator

org.springframework.web.servlet.ViewResolver= org.springframework.web.servlet.view.InternalResourceViewResolver




annotation을 이용한 jUnitTest를 하려면 이것저것 신경쓸게 많다.
하지만 EasyMock을 사용하면 그 신경쓸꺼리를 많이 덜게 해준다.
특히 Controller 같은 경우 request, response등의 Mockup 객체가 있어야 하기에 더더욱 그렇다.

세팅방법은 간단하다. EasyMock의 클래스/메소드 사용법만 익히면 된다.

1. 관련 jar 파일을 임포트한다.


처음 easymock-3.0.jar(현재 최신판)만 import 하니 관련 클래스가 없다는 다음의 메시지가 뜬다.

 java.lang.NoClassDefFoundError: org/objenesis/ObjenesisHelper
--- 이하 생략 ----

그래서 찾아보니 jar 파일이 하나 더 필요하단다. 이 jar를 추가하니 에러가 없어졌다.

2. Test하려는 Controller class 옆에 ~ControllerTest라는 아무이름으로 클래스 하나 생성한다.
3. @Before, @Test 어노테이션을 붙인 메소드를 만든다.
public class RequestMappingTest {  
 
    private MockHttpServletRequest request;  
    private MockHttpServletResponse response;  
    private MyController controller;  
    private AnnotationMethodHandlerAdapter adapter;  
 
    @Before 
    public void setUp() {  
 
        controller = EasyMock.createNiceMock(MyController.class);  
 
        adapter = new AnnotationMethodHandlerAdapter();  
        request = new MockHttpServletRequest();  
        response = new MockHttpServletResponse();  
    }  
 
    @Test 
    public void testname() throws Exception {  
 
        request.setRequestURI("/users");  
 
        controller.foo(response);  
        EasyMock.expectLastCall().once();  
        EasyMock.replay(controller);  
 
        adapter.handle(request, response,   controller);   
        EasyMock.verify(controller);  
    }  

 소스출처 : http://www.olivergierke.de/wordpress/2009/05/unit-testing-annotation-based-spring-mvc-controllers/

4. EasyMock 클래스의 메소드가 각각 어떻게 사용되는지만 익히면 된다.

'개발노트 > Spring' 카테고리의 다른 글

[링크]Spring 3.0 Overview 번역문  (0) 2010.06.09
[펌]DispatcherServlet의 디폴트 대체(fallback) 전략?  (0) 2010.06.01
Spring MVC 따라하기 Step1.  (0) 2010.04.29
예제 싸이트  (0) 2010.04.27
POI - Excel 변환용 API  (0) 2010.04.07