본문 바로가기

IT공부/스프링

스프링 MVC

스프링 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