[SPRING] MockMvc를 사용하여 스프링 컨트롤러 메소드를 테스트하는 방법은 무엇입니까?
SPRINGMockMvc를 사용하여 스프링 컨트롤러 메소드를 테스트하는 방법은 무엇입니까?
스프링 3.2.0과 4를 사용하고 있습니다.
이것은 테스트해야하는 컨트롤러 방법입니다.
@RequestMapping(value="Home")
public ModelAndView returnHome(){
return new ModelAndView("Home");
}
spring-servlet config는 다음과 같습니다.
<context:annotation-config/>
<context:component-scan base-package="com.spring.poc" />
<mvc:annotation-driven />
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
이것은 내 테스트 수업입니다.
public class TestController {
private MockMvc mockMvc;
@Before
public void setup() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/");
viewResolver.setSuffix(".jsp");
this.mockMvc = standaloneSetup(new CController()).setViewResolvers(
viewResolver).build();
}
@Test
public void CControllerTest() throws Exception {
......
......
}
}
어떻게 MockMvc로이 메소드를 테스트 할 수 있습니까?
해결법
-
==============================
1.다음 어노테이션을 사용하여 애플리케이션 디스패처 서블릿 xml을 사용할 수 있습니다. 다음 예제는 / mysessiontest 경로를 사용하여 일부 세션 속성을 설정하고 특정보기가 반환 될 것으로 기대하는 컨트롤러를 치는 것입니다.
다음 어노테이션을 사용하여 애플리케이션 디스패처 서블릿 xml을 사용할 수 있습니다. 다음 예제는 / mysessiontest 경로를 사용하여 일부 세션 속성을 설정하고 특정보기가 반환 될 것으로 기대하는 컨트롤러를 치는 것입니다.
import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpSession; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration({ "classpath:springDispatcher-servlet.xml" }) public class MySessionControllerTest { @Autowired WebApplicationContext wac; @Autowired MockHttpSession session; @Autowired MockHttpServletRequest request; private MockMvc mockMvc; @Before public void setup() { this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); } @Test public void getAccount() throws Exception { UserDomain user = new UserDomain(); user.setFirstName("johnny"); session.setAttribute("sessionParm",user); this.mockMvc.perform(get("/mysessiontest").session(session) .accept(MediaType.TEXT_HTML)) .andExpect(status().isOk()) .andExpect(view().name("test")); } }
from https://stackoverflow.com/questions/14563489/how-to-test-a-spring-controller-method-by-using-mockmvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 계정 생성, 암호 분실 및 암호 변경 (0) | 2018.12.15 |
---|---|
[SPRING] @Service 주석은 어디에 보관해야합니까? 인터페이스 또는 구현? (0) | 2018.12.15 |
[SPRING] Spring MVC : 맞춤 404 오류 페이지를 반환하는 방법? (0) | 2018.12.15 |
[SPRING] 스프링 부트의 핫 스와핑 (0) | 2018.12.15 |
[SPRING] 스프링 웹, 보안 + web.xml + mvc 디스패처 + Bean이 두 번 생성됨 (0) | 2018.12.15 |