SpringBoot3 적용 이후 발생한 기존 통합테스트코드 오류 해결
(1) restdocs 관련 라이브러리 버전 업
•
기존 spring-restdocs-mockmvc 는 3.0.0을 사용 중이고,
◦
com.epages:restdocs-api-spec-mockmvc (Spring REST Docs의 확장 라이브러리 중 하나) 는 0.16.4 를 사용하고 있었다.
•
이때, restdocs-api-spec-mockmvc:0.16.4는 spring-restdocs-mockmvc:2.0.4에 의존하기에 호환성 문제가 발생했었다.
◦
따라서, 이를 먼저 0.16.4에서 0.18.2로 업데이트해주었다.
•
버전 호환에 관해선 restdocs-api-spec 깃허브에 아래와 같이 언급되어 있다.
Spring Boot version | restdocs-api-spec version |
3.x | 0.17.1 or later |
2.x | 0.16.4 |
◦
우리 팀의 경우 spring boot 3.0으로 업그레이드하면서 spring-restdocs-mockmvc도 3.0.0을 사용하게 되었다.
기존 버전 확인 결과 → ./gradlew dependencyInsight --dependency org.springframework.restdocs:spring-restdocs-mockmvc --configuration testRuntimeClasspath
변경 후 버전 확인 결과 → ./gradlew dependencyInsight --dependency org.springframework.restdocs:spring-restdocs-mockmvc --configuration testRuntimeClasspath
(2) Rest Docs 3.0 릴리즈 노트 참고해 deprecate 된 부분 수정
•
바뀐 부분 : Query Parameters
Documenting Query Parameters
Support for documenting query parameters has been added. Please refer to the reference documentation for further details. This new support partially replaces the support for documenting request parameters which mixed query and form parameters together.
◦
requestParameters 가 deprecated 되고 queryParameters 으로 대체되었다.
◦
예시 코드로 보여주자면 아래와 같다
▪
변경 전 코드
document("center-search",
preprocessRequest(prettyPrint()),
preprocessResponse(prettyPrint()),
requestParameters(
parameterWithName("name").description("센터 이름"),
parameterWithName("address").description("센터 주소")
),
responseFields(
fieldWithPath("data[].center_id").type(JsonFieldType.NUMBER).description("센터 아이디"),
fieldWithPath("data[].name").type(JsonFieldType.STRING).description("센터 이름")
))
);
Java
복사
▪
변경 후 코드
document("center-search",
preprocessRequest(prettyPrint()),
preprocessResponse(prettyPrint()),
queryParameters(
parameterWithName("name").description("센터 이름"),
parameterWithName("address").description("센터 주소")
),
responseFields(
fieldWithPath("data[].center_id").type(JsonFieldType.NUMBER).description("센터 아이디"),
fieldWithPath("data[].name").type(JsonFieldType.STRING).description("센터 이름")
))
);
Java
복사
테스트코드 이전 작업물