본문 바로가기
Develop/Spring

[5.모델2방식과 스프링MVC]5.3 WAS없이 컨트롤러를 테스트하기

by jaekk 2018. 8. 17.


1. javax.servlet-api 추가

 


WAS를 실행하지 않고 컨트롤러를 테스트하려면 pom.xml의 servlet 버전을 높여줘야 한다.



2. 소스 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
javpackage org.zerock.web;
 
import static org.junit.Assert.fail;
 
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
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.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
 
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration(locations = {"classpath:spring/root-context.xml"})    //DB쪽만 셋팅
@WebAppConfiguration
@ContextConfiguration(locations = { "classpath:spring/*.xml" }) // DB쪽만 셋팅
public class SampleControllerTest {
 
    private static final Logger logger = LoggerFactory.getLogger(SampleControllerTest.class);
 
    @Autowired
    private WebApplicationContext ac;
 
    // 브라우저를 호출하는 객체
    private MockMvc mockMvc;
 
    @Before
    public void setUp() throws Exception {
        // mockMvc객체에 WebAppConfiguration 주입
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.ac).build();
    }
 
    @Test
    public void test() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/doA")) ;
    }
 
}
 
cs


@RunWith(SpringJUnit4ClassRunner.class)

@WebAppConfiguration

WebApplicationContext(웹 어플리케이션 환경설정 인터페이스)을 사용하는데 필요한 애너테이션


@ContextConfiguration(locations={"classpath:spring/*.xml"})

root-context.xml(DB), servlet.xml(MVC) 설정하는 xml을 모두 포함하기 위하여


MockMvc : 브라우저 요청&응답 객체



1
2
3
4
5
6
7
8
9
10
11
    @Before
    public void setUp() throws Exception {
        // mockMvc객체에 WebAppConfiguration 주입
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.ac).build();
    }
 
    @Test
    public void test() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/doA")) ;
    }
 
cs


@Before: 애플리케이션 호출 전 

1
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.ac).build();
cs

MockMvc 객체 생성(브라우저 요청&응답 객체)


1
 mockMvc.perform(MockMvcRequestBuilders.get("/doA")) ;

cs

perform()메서드를 실행하여 post/get방식의 호출로 웹 브라우저 "/doA"에 해당하는 URL 접근


 

※ 쿼리 스트링 넘기기


src>test>java>org>zerock>web>SampleControllerTest.java


src>main/java/org/zerock/web/SampleController.java















본 게시글은 코드로 배우는 스프링 웹 프로젝트 책을 참고하여 작성하였습니다.



본 게시글은 '빵굽는개발자 빵형'님의 '[스터디] 코드로배우는스프링 10 WAS없이 컨트롤러를 테스트하기' 동영상을 참고하여 작성하였습니다.

https://www.youtube.com/watch?v=2bPAd2nZI1k



댓글