JaCoCo란 java의 코드 커버리지를 체크하는 라이브러리이다. 프로젝트 코드 커버리지 (테스트 코드 적용률)을 측정하고 퍼센테이지로 확인할 수 있도록 리포트를 생성한다. 또한 커버리지의 기준을 설정하여 해당 기준에 미치지 못할 경우 bulid가 불가능하도록 설정하는 것도 가능하다. 이전에 만들어둔 Post Board 프로젝트에 JaCoCo를 적용해보았다.
환경
- JUnit5
- JDK 17
- Spring Boot 3.1.5
- IDE : Intellij
Gradle 설정에 JaCoCo 플러그인을 추가하면 의존성이 추가된다.
plugins {
id 'jacoco'
}
JaCoCo Gradle 플러그인에는 jacocoTestReport와 jacocoTestCoverageVerification task가 있다. 이를 통해 리포트의 저장 형식과 커버리지의 기준 퍼센테이지를 설정할 수 있다.
jacocoTestReport
: 커버리지 결과 리포트 설정
jacocoTestCoverageVerification
: 커버리지 기준 설정
jacocoTestReport {
reports {
// 원하는 리포트를 켜고 끌 수 있습니다.
html.enabled true
xml.enabled false
csv.enabled false
// 리포트 타입마다 리포트 저장 경로를 설정할 수 있습니다.
html.destination file("jacoco/jacocoHtml")
xml.destination file("jacoco/jacoco.xml")
}
}
jacocoTestCoverageVerification {
// 커버리지의 범위와 퍼센테이지를 설정합니다.
violationRules {
rule {
element = 'CLASS' // class 단위로 룰을 체크합니다.
// 브랜치 커버리지의 최소값을 설정합니다.
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.80
}
}
}
}
이렇게 기본 설정을 완료한 후 실행시켜주면 커버리지 리포트를 확인할 수 있다.
jacoco -> verificaion -> test
에서 전체 test를 실행한다.jacocoTestRepost
를 누르면 해당 테스트 결과로 리포트가 생성된다.jacocoTestCoverageVerification
까지 눌러주자.결과 리포트는 gradle에서 설정한 경로에 생성된다. index.html
파일을 열어주면 커버리지 퍼센트를 확인할 수 있다.
해당 리포트에서 세부 내용을 확인하면 각각의 메서드에 대한 커버리지 퍼센트까지 자세히 볼 수 있으며 코드에서 색깔로도 확인 가능하다. 빨간색은 커버하지 못한 부분, 노란색은 100프로 커버하지 못한 부분, 초록색은 완벽하게 커버된 부분을 나타낸다.
커버리지를 확인하고 싶지 않은 코드가 있을 경우 gradle 또는 해당 클래스나 메서드에서 직접 설정하여 제외시켜줄 수 있다.
jacocoTestCoverageVerification {
violationRules {
...(생략)
excludes = [
'*.ErrorResult',
'*.jwt.*'
]
}
}
@Generated
애너테이션으로 설정@Generated
public class jwtUtil {
}
참고
https://techblog.woowahan.com/2661/
https://learnote-dev.com/java/jacoco-%EC%A0%81%EC%9A%A9%ED%95%98%EC%97%AC-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80-%EC%B2%B4%ED%81%AC%ED%95%98%EA%B8%B0/