스프링 MVC
스프링 MVC에서 JSON 형식의 데이터를 주고받는 경우가 있다. 이를 올바르게 처리하기 위해서 jackson라이브러리를 추가한다.
아래와 같이 pom.xml에 의존성 설정을 해준다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.4</version>
</dependency>
스프링 MVC에서 컨트롤러를 테스트하기 위해서는 WAS에 Servlet 스펙 버전을 일치시켜주는게 좋다. pom.xml에서 아래와 같이 버전을 변경해준다.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
아래와 같이 SampleController를 생성한다.
package org.project.web;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class SampleController {
private static final Logger logger =
LoggerFactory.getLogger(SampleController.class);
@RequestMapping("doA")
public void doA(){
logger.info("doA called....................");
}
@RequestMapping("doB")
public void doB(){
logger.info("doB called....................");
}
}
그 다음으로 src/test/java 밑에 아래와 같이 SampleControllerTest를 작성한다.
package org.project.web;
import javax.inject.Inject;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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)
@WebAppConfiguration
@ContextConfiguration(
locations ={"file:src/main/webapp/WEB-INF/spring/**/*.xml"})
public class SampleControllerTest {
private static final Logger logger =
LoggerFactory.getLogger(SampleControllerTest.class);
@Inject
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
logger.info("setup............");
}
@Test
public void testDoA() throws Exception{
mockMvc.perform(MockMvcRequestBuilders.get("/doA"));
}
}
@WebAppConfiguration는 스프링 MVC를 테스트하기 위해 추가한 것이다. MockMvc 클래스는 브라우저에서 요청이나 응답을 하는 객체로 생각하면 된다. 매번 테스트 전에 @Before 어노테이션이 붙은 setup()메서드에서 MockMvc를 생성하고 testDoA() 메서드에서 mockMvc.perform() 메서드를 통해 get, post 요청을 하게된다.
테스트에 성공하면 아래와 같은 로그들이 출력된다.
위와 같이 테스트를 하는 것의 장점은 아래와 같다.
- 브라우저를 통해 정해진 입력항목을 입력해서 테스트를 해야하는 반면 테스트 코드를 사용하면 그러한 절차없어 간편하다.
- WAS를 통해 배포를 하면서 테스트를 하면 WAS를 껏다 키면서 배포하는 시간이 오래 걸리는데 테스트 코드를 사용하면 이를 단축시킬 수 있다.
'IT공부 > 스프링' 카테고리의 다른 글
STS에서 Git 사용하기 (0) | 2020.07.05 |
---|---|
스프링에서 MyBatis 사용하기 (0) | 2020.07.04 |
MyBatis 연동 (0) | 2020.07.03 |
MySQL 연결 테스트 (0) | 2020.07.03 |
MySQL 설치 (0) | 2020.07.03 |