스프링 부트 : Restful API 서버 만들기 "TDD 단위테스트 추가" - 2 of ?

2020. 7. 10. 13:16Development/[Server] 서버

728x90

TDD의 기본적 지향점, 유용함, 편리함 그런 것들은 일단 논외로 하겠습니다..

테스트 케이스를 만드는 방법은 다음과 같이 진행합니다.

 

(1) 스프링부트 프로젝트의 main 패키지와 같은 레벨 Depth에 test 이하 패키지 생성
(2) 프로젝트의 build.gradle 수정
(3) 인텔리제이의 설정 변경
(4) 테스트 코드를 작성하여 빌드

 

(1) 스프링부트 프로젝트의 main 패키지와 같은 레벨 Depth에 test 이하 패키지를 만든다.

Directory 클릭 > test

(2) 프로젝트의 build.gradle 수정

1) dependencies 내용 추가

dependencies {
  //아래 내용 추가
  testCompile group: 'junit', name: 'junit', version: '4.12'
  testImplementation('org.springframework.boot:spring-boot-starter-test') {
     exclude module: 'junit'
  }
}

 

2) 최상위 depth에 아래 내용 추가

tasks.test { useJUnitPlatform() }

 

(3) 인텔리제이의 설정을 다음과 같이 변경한다.

1) Open Module Settings

*. java와 resources 디렉토리를 각각 클릭해서 마크 색상을 선택합니다. (mark as)

 

(4) 테스트 코드를 작성하여 빌드해본다.

import com.sentilab.Api.Common.ApiController;
import com.sentilab.Core.StartApp;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;


import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@RunWith(SpringRunner.class)
@ContextConfiguration(classes= StartApp.class)
@WebMvcTest(ApiController.class)
public class AppTdd {

    @Autowired
    MockMvc mockMvc;

    @Test
    public void commonGetTest() throws Exception {
    	//테스트할 get api 경로 (실제 어플리케이션에서 만든 경로)
        mockMvc.perform(get("/api/anonymous"))
                //기대하는 응답코드
                .andExpect(status().isOk())  
                //기대하는 결과값
                .andExpect(content().string("{\"responseCode\":200,\"responseMsg\":\"success\"}"))
                //결과 출력
                .andDo(print());
    }

}

*. 테스트 어노테이션이 붙은 좌측 녹색 실행 버튼 또는 툴 상단의 녹색 삼각형 실행 버튼을 클릭합니다.

 

*. Run 콘솔에서 결과를 확인합니다.

MockHttpServletRequest:
      HTTP Method = GET
      Request URI = /api/anonymous
       Parameters = {}
          Headers = []
             Body = <no character encoding set>
    Session Attrs = {}
      
        .. 중략 ..
        
MockHttpServletResponse:
           Status = 200
    Error message = null
          Headers = [Content-Type:"application/json"]
     Content type = application/json
             Body = {"responseCode":200,"responseMsg":"success"}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []

 

728x90