728x90
SpringBoot에서 MockMvc를 이용하여 Test 코드를 작성하는 방법에 대해 간략하게 알아보겠습니다.
1. 라이브러리 추가
testImplementation 'org.springframework.boot:spring-boot-starter-test'
- testImplementation 이 작성되어 있는지 확인합니다.
2. Test 클래스 생성
- test 경로 밑에 원하는 패키지와 클래스를 생성합니다.
3. 어노테이션 작성
@SpringBootTest(classes = MymsgApiApplication.class)
@AutoConfigureMockMvc
@ActiveProfiles("local")
- @SpringBootTest : 스프링부트 통합 테스트라는 것을 나타내며 classes 속성에 @SpringBootApplication 어노테이션이 작성된 클래스를 로드하여야 합니다.
- @AutoConfigureMockMvc : MockMvc 객체를 자동으로 구성하도록 지시하며 MockMvc는 HTTP 요청을 시뮬레이트하고 컨트롤러를 테스트하는 데 사용됩니다.
- @ActiveProfiles : 활성화할 프로파일을 지정합니다. 여기선 "local"로 지정하였습니다.
4. 소스코드 작성
@Autowired
private Gson gson;
@Autowired
private MockMvc mockMvc;
/**
* 로그인 성공
*/
@Test
void 로그인성공() throws Exception {
final String url = "/user/loginProc";
final UserLginReq userLginReq = new UserLginReq();
userLginReq.setUserId("admin");
userLginReq.setUserPw("1234");
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.post(url)
.content(gson.toJson(userLginReq))
.contentType(MediaType.APPLICATION_JSON)
);
int status = result.andReturn().getResponse().getStatus();
assert status == 200;
}
- gson 과 mockmvc를 주입받고, url에 Request 데이터를 맵핑하여 호출하고 결과를 반환하는 소스입니다. assert를 통해 Http 통신의 상태값을 체크합니다.
5. 전체소스
package com.myapi.test;
import com.google.gson.Gson;
import com.myapi.mymsgapi.MymsgApiApplication;
import com.myapi.mymsgapi.comm.utils.DateUtil;
import com.myapi.mymsgapi.comm.utils.StringUtil;
import com.myapi.mymsgapi.contoller.user.dto.UserLginReq;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
@SpringBootTest(classes = MymsgApiApplication.class)
@AutoConfigureMockMvc
@ActiveProfiles("local")
class ApplicationTester {
@Autowired
private Gson gson;
@Autowired
private MockMvc mockMvc;
/**
* 로그인 성공
*/
@Test
void 로그인성공() throws Exception {
final String url = "/user/loginProc";
final UserLginReq userLginReq = new UserLginReq();
userLginReq.setUserId("admin");
userLginReq.setUserPw("1234");
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.post(url)
.content(gson.toJson(userLginReq))
.contentType(MediaType.APPLICATION_JSON)
);
int status = result.andReturn().getResponse().getStatus();
assert status == 200;
}
/**
* 로그인 실패
*/
@Test
void 로그인실패_유효성오류() throws Exception {
final String url = "/user/loginProc";
final UserLginReq userLginReq = new UserLginReq();
userLginReq.setUserId("admin");
userLginReq.setUserPw("");
final ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.post(url)
.content(gson.toJson(userLginReq))
.contentType(MediaType.APPLICATION_JSON)
);
int status = result.andReturn().getResponse().getStatus();
assert status == 500;
}
/**
* 간단한 Util 테스트
*/
@Test
public void 날짜테스트() {
String str = DateUtil.getDateStr();
if (StringUtil.isNotEmpty(str)) {
System.out.println(str);
} else {
System.out.println("isEmpty");
}
}
}
감사합니다.
728x90
'프레임워크 > SpringBoot' 카테고리의 다른 글
[SpringBoot] ErrorController 작성하기(With Thymeleaf) (0) | 2024.05.28 |
---|---|
[SpringBoot] Mybatis 다중 Datasource 적용하기 (0) | 2024.05.27 |
[SpringBoot] @LoginCheck 어노테이션 만들기 (0) | 2024.05.23 |
[SpringBoot] JAR 파일 서버 배포 (0) | 2024.05.20 |
[SpringBoot] Error 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16MSWIN949 (0) | 2024.05.20 |