./gradlew clean test
에서 제외하고 싶은 테스트 메서드나 클래스에는 위에 @Disabled를 붙이면 된다.
전체 테스트를 수행할때, 공통적으로 수행하고 싶은 작업이 단 한번만 있으면 테스트 클래스들이 상속받는 상위 템플릿 클래스를 하나 만든다,
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
예를 들어 다음과 같은 컨트롤러가 있다고 치자
구글 뿐만 아니라 여러가지 소셜서비스 구현체들이 존재할 수 있다.
이럴 경우 일반적인 @MockBean으로 서비스 계층을 Mocking 하는 게 불가능하고, 직접 Mocking용 Bean을 만들어주고 주입하자.
https://shirohoo.github.io/backend/test/2022-02-22-rest-docs-optimization/
testImplementation("org.instancio:instancio-junit:3.3.0")
테스트용 객체들을 일일히 생성하기 귀찮을 때 유용하게 사용할 수 있는 라이브러리이다.
사용방법은 공식문서에 잘 나왔으니 생략한다.
Docker를 활용하여, 프로덕션과 격리된 통합테스트를 수행할 때 유용하게 사용가능하다.
아래는 엑셀 파일을 다운로드하는 API이다.
보다시피 org.apache.commons.io.IOUtils 의 copy라는 정적 메서드를 사용하고 있다. 이럴경우 일반적인 모킹은 불가능하다.
Mockito에는 mockStatic을 통해 정적메서드를 모킹해줄 수 있는 API를 제공해준다.
정적 메서드를 모킹하는 게 좋지 않은 패턴이라고 하지만.. 어떻게 세상 일이 맘처럼 쉽게 흘러가겠냐. 필요할 때는 해야 한다.
https://www.baeldung.com/mockito-mock-static-methods
https://stackoverflow.com/questions/63263662/mockito-3-4-0-static-mocking-exception
https://sedangdang.tistory.com/303
https://shanepark.tistory.com/417
https://shanepark.tistory.com/422
MockMultipartFile name 이 Key 부분이니 컨트롤러의 파라미터 네임과 일치하여 작성하자.
이런 식으로 RequestPart 로 Json을 같이 받는 API 가 있다면 아래와 같이 TEST 가능하다.
src/test/resources/org/springframework/restdocs/templates/asciidoctor/ 경로에 원하는 형식을 추가
https://stackoverflow.com/questions/43680422/document-image-response-in-spring-rest-docs
https://velog.io/@dhfl0710/Spring-RestDocs-%EB%AC%B8%EC%84%9C%ED%99%94
activeProfiles와 spring.profiles.actifve 가 일치하지 않을 때..