1. 기존의 Request, Response가 arg로 있는 형태
MockHttpServletRequest, MockHttpServletResponse를 사용하여 injection 받은 Controller 직접 invoke

2. ModelAndView 를 Return 하는 형태
ModelAndViewAssert 의 assert*를 사용하여 값을 비교

3. (Model model) 이 arg 인 형태
Model은 Interface이기 때문에 ExtendedModelMap를 생성하여 controller method invoke 후 
ModelAndViewAssert로 비교

4.  BindingResult 등이 arg로 있는 spring 3에서 주로 쓰는 형태
MockitoAnnotation 및 Mockito class를 사용하여 test case의 method 시작전 Mock객체를 받아놓고 구현

예)
        

import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;


       @Mock
	private BindingResult mockBindingResult;

	@Before
	public void setupTest() {
		MockitoAnnotations.initMocks(this);
		Mockito.when(mockBindingResult.hasErrors()).thenReturn(false);
	}

JUnit에 다음과 같이 표현 한다면 BindingResult 객체의 hasErrors method return값을 유저가 미리 정의 할 수 있다.


TO SUM UP....
결국 Spring MVC를 어떻게 사용하느냐에 따라 상황에 맞게 사용하면 되며 JUnit Test의 범위 역시 유저가 스스로 결정하여 assert를 적절하게 구사하면 될 것이다.

ps. ModelAndViewAssert (spring 2.5 API)가 생각보다 많은 assert method를 제공해 준다. 
신고
Posted by Stewie


티스토리 툴바