자바 코드 커버리지 툴은 다양하게 있지만 한글 자료가 가장 많아 자코코를 선택하였다. groovy 문법을 사용하여 제외하고 싶은 클래스들을 쉽게 제외할 수 있다는 장점도 있다. csv 파일 형식의 리포트도 제공하여 현재 사용중인 소나큐브와도 연동이 가능하다.
plugins {
id 'java'
id "jacoco"
}
플러그인에 jacoco 추가 후 gradle 새로고침하여 플러그인 설치
jacoco {
toolVersion = "0.8.8"
}
jacoco 버전 명시 (최신 버전)
jacoco 플러그인을 설치하면 리포트 정보를 설정하는 jacocoTestReport
와 테스트 검증 기준을 설정하는 jacocoTestCoverageVerification
이 추가됨
jacoco 에서 생성하는 리포트와 어플리케이션에서 실행하는 테스트 간의 종속성은 없지만, 테스트 후 리포트를 생성하도록 설정해두었다. 리포트를 먼저 생성 후 테스트 실행도 가능하다.
테스트 → 리포트 생성 → 리포트 결과 검증
test {
useJUnitPlatform() // JUnit5 설정 추가
finalizedBy 'jacocoTestReport'
}
jacocoTestReport {
finalizedBy 'jacocoTestCoverageVerification'
}
보기 편하도록 html
파일과 소나큐브와 연동을 위해 csv
파일을 설정한다.
jacocoTestReport {
reports {
html.enabled true
csv.enabled true
xml.enabled false
html.destination file("$buildDir/reports/jacoco/html")
csv.destination file("$buildDir/reports/jacoco/jacoco.csv")
}
finalizedBy 'jacocoTestCoverageVerification'
}
jacocoTestCoverageVerification {
violationRules {
rule {
enabled = true // 현재 규칙 설정 여부
element = 'CLASS' // 해당 클래스가 실행이 되었는지 검증
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.10 // 테스트 커버리지 10% 미만일 경우 실패
}
excludes = []
}
}
}