티스토리 뷰
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)
- perform(get("/sample/success")): /sample/success URL로 HTTP GET 요청을 보냅니다.
- accept(MediaType.APPLICATION_JSON): JSON 형식으로 응답할 것을 기대합니다.
- andExpect(status().isOk()): 서버로부터 HTTP 상태 코드 200(OK)이 반환되었는지 확인합니다.
- 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 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- iPhone
- MAC OSX 10.7
- jQuery
- iOS 개발
- MySQL
- oracle
- 제이쿼리
- 오브젝트 C
- Java
- zero
- 자바
- JSP
- IT
- 아이폰 어플리케이션
- 오브젝티브 C
- Spring
- SQL
- 자바스크립트
- Objective-C
- Spring Framework
- JavaScript
- Programming
- Objective C
- 아이폰 개발
- iBATIS
- 아이폰
- 티스토리챌린지
- 오블완
- tomcat
- Object C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함