pull request 이후 build 체크 시 에러가 발생한다고 메시지가 옴 → Details
버튼을 클릭하면 페이지 이동
TestCase에서 영속성 초기화가 안되서 그런 것으로 생각하고 있었는데 맞는지 한번 확인해보기로 함 → ./gradlew.bat test jacocoTestCoverageVerification
→ProductService 에서 1개의 line이 호출이 안 됬다고 리포팅 해줌
테스트 실패 나는 테스트부터 처리 하기로 함. → 웹으로 확인 → /app/build/reports/jacoco/tests/test/index.html
브라우저로 열기
2가지 케이스에 대해 실패 확인 → ProductRepository 쪽 소스임
문제가 되는 소스 제거 및 수정 하여 테스트 케이스 100퍼센트로 만듬
프로젝트의 root 폴더에서 명령어로 jacoco 확인 → 그래도 문제가 있음. → 역시나 동일한 ProductService에서 1개가 hit하지 않음
/app/build/reports/jacoco/html/index.html
브라우저로 Open
com.codesoom.assignment.application Package에서 Code Coverage가 84%임을 확인 → 클릭해서 들어가 보면 ProductService에서 91% Code Coverage임 을 확인
ProductService 클릭 → getProduct(Long)이 호출이 안됨 → getProduct(Long) 클릭
getProduct(Long)이 hit가 안됨
여기가 호출이 안된 건가? → **./gradlew.bat --info test jacocoTestCoverageVerification
→ --**info
옵션으로 상세 확인
Controller는 제대로 호출됨 확인
Repository에서 호출이 BDD관계가 이상함을 발견 → { }
(브라켓) 처리가 이상해서 수정 → 호출은 이상 없어 보임 → 수정 후 테스트 케이스 정상 확인
14. **./gradlew.bat --scan test jacocoTestCoverageVerification
→ --scan
** 옵션으로 Gradle사이트에서 확인 → 중간에 yes 누르면 사이트 주소 알려줌.
사이트에서 확인 → ProductService에서 hit가 안됨
ProductServiceTest에서 getProduct 호출 부분 메서드 확인 → 발견 repository에서 호출했음.
@Test
@DisplayName("요청한 고양이 장난감을 반환한다.")
void existed_getProduct_return() {
//productService.getProduct(productId); 가 호출 되었어야함
Optional<Product> returnProduct = productRepository.findById(productId);
assertThat(returnProduct.get())
.extracting("id")
.isEqualTo(productId);
}
@Test
@DisplayName("요청한 고양이 장난감을 반환한다.")
void existed_getProduct_return() {
product = productService.getProduct(productId);
assertThat(product)
.extracting("id")
.isEqualTo(productId);
}
테스트 정상 확인
.\gradlew.bat test jacocoTestCoverageVerification
다시 실행 → Build 성공
hit 확인