Controlle단 유닛 테스트에 대해 알아보던 중 Spring REST Docs까지 흘러들어가 공식문서를 훑어보던 중 의존성을 추가하는 부분에서 다음과 같은 부분을 발견하였다. (공식문서)
Add a dependency on spring-restdocs-mockmvc in the testImplementation configuration. If you want to use WebTestClient or REST Assured rather than MockMvc, add a dependency on spring-restdocs-webtestclient or spring-restdocs-restassured respectively instead.
위 내용을 간단하게 정리하자면 MockMvc 대신 WebTestClient 또는 REST Assured를 사용할 수 있다는 이야기이다.
Spring REST Docs를 간단하게 설명하면 RESTful한 서비스가 테스트를 통과한다면 이를 기반으로 문서화를 돕는 Spring project의 한 부분이다. 즉, 테스트가 선행이 되어야 한다는 의미이며 이러한 테스트에 사용되는 툴 중 MockMvc, WebTestClient, REST Assured를 지원한다는 이야기이다.
그렇기에 MockMvc, WebTestClient, REST Asseured에 대한 차이점이 궁금해졌고, 이에 대한 내용을 간단하게라도 정리를 해두기 위해 해당 글을 작성하게 되었다.
각 라이브러리의 공식 문서 및 서칭을 통해 알아보았으나 깊게 파악은 못하여 간단하게 정리를 해두고 이후를 기약..
공통점
위 3개의 라이브러리들은 HTTP 요청에 대한 응답을 테스트하는 용도로 사용된다.
MockMvc
Spring framework에서 제공 (공식 문서)
실제 네트워크 통신에 HTTP 요청이 발생하는 것 X
주로 컨트롤러 계층의 단위 테스트(unit test)에 사용
WebTestClient
Spring framework에서 제공 (공식 문서)
Spring팀에서 TestRestTemplate 대신 사용하길 권하는 라이브러리(RestTemplate API Docs의 Note 부분 참고)
내부적으로 WebClient를 사용하여 요청에 따른 응답을 확인
리액티브 프로그래밍 모델을 기반으로 하며 동기식 및 비동기식 요청/응답 처리를 모두 지원
HTTP 요청 및 WebFlux 테스트에 사용 가능
단위 테스트가 아닌 통합 테스트(integration test)에 사용
REST Assured
Spring framework에서 제공하지 않기에 의존성 추가 필요 (공식 사이트)
다양한 유형의 인증, 응답 형식 및 사용자 지정 매처를 지원
동기식 및 비동기식 요청/응답 처리를 모두 지원
JSON/XML 응답 구문 분석 및 응답에서 값 추출 지원과 같은 몇 가지 추가 기능을 제공
'Develop > TIL(Today I Learned)' 카테고리의 다른 글
JPA에 대한 끄적임 (0) | 2023.03.08 |
---|---|
Spring - 클래스 초기화 방법 비교 (PostConstruct, EventListener) (0) | 2023.03.06 |
Spring Converter & Formatter (0) | 2023.02.24 |
Spring MVC - 예외 처리(API) (0) | 2023.02.23 |
Spring MVC - 예외 처리(Error page) (0) | 2023.02.20 |