티스토리 뷰

728x90

Springframework 기반에서 개발할 때 자주 사용되는 MockMVC를 활용하여 URL을 호출하고, 그 결과를 검증하는 코드 예제입니다. 이 코드는 MockMVC를 사용한 기본적인 REST API 테스트 방법을 보여주며, URL에 대한 응답을 검증하는 방식으로 작동합니다.

 

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
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.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@ContextConfiguration(locations = {"classpath:/spring/app-config.xml", "classpath:/spring/web-config.xml"})
@WebAppConfiguration
public class SampleControllerTest {

    @Autowired
    private WebApplicationContext wac;

    private MockMvc mockMvc;

    @BeforeEach
    public void setup() {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
    }

    @Test
    public void testSuccessJsonResponse() throws Exception {
        mockMvc.perform(get("/sample/success") // 호출할 URL 지정
                .accept(MediaType.APPLICATION_JSON)) // Content Type JSON 확인
                .andExpect(status().isOk()) // HTTP 상태 코드 200 확인
                .andExpect(content().json("{\"success\": true}")); // 응답 본문이 { "success": true }와 일치하는지 확인
    }
}

 

코드 설명

  • @ContextConfiguration: @ContextConfiguration 어노테이션을 사용하여 Spring XML 설정 파일 경로를 지정합니다. 이를 통해 애플리케이션 컨텍스트가 로드되며, 테스트에서 필요한 모든 빈(bean)들을 초기화할 수 있습니다.
  • @WebAppConfiguration: 이 어노테이션은 웹 애플리케이션 설정을 로드하여, 웹 환경에서 실행되는 Spring MVC 테스트가 가능하도록 합니다. MockMvc가 웹 환경에서 동작할 수 있도록 설정을 지원합니다.
  • MockMvc 설정: MockMvcBuilders.webAppContextSetup(this.wac).build() 메서드를 통해 MockMvc 객체를 초기화하고, 전체 애플리케이션 컨텍스트와 연결하여 테스트에서 사용할 수 있게 준비합니다.

테스트 메서드 설명 (testSuccessJsonResponse)

  1. perform(get("/sample/success")): /sample/success URL로 HTTP GET 요청을 보냅니다.
  2. accept(MediaType.APPLICATION_JSON): JSON 형식으로 응답할 것을 기대합니다.
  3. andExpect(status().isOk()): 서버로부터 HTTP 상태 코드 200(OK)이 반환되었는지 확인합니다.
  4. andExpect(content().json("{\"success\": true}")): 서버의 응답 본문이 {"success": true}와 일치하는지 검증합니다.

이와 같은 방식으로 MockMvc를 활용하여 Spring MVC에서 API 요청과 응답을 손쉽게 테스트할 수 있으며, JSON 응답의 정확성과 HTTP 상태 코드를 포함한 다양한 요소를 검증할 수 있습니다.

 

728x90

'헉!! > jsp, java' 카테고리의 다른 글

[JAVA] 제어 문자 (Control Characters) 제거  (0) 2024.11.08
[Java] Optional  (0) 2024.07.20
[Java] Functional Interface 와 Lambda  (0) 2024.07.20
[Java] Stream  (0) 2024.07.20
[JAVA] pdfbox 텍스트 구분자 넣기  (0) 2020.11.21