기타
JaCoCo 적용하여 테스트 커버리지 체크하기
MIN우
2023. 7. 22. 18:19
728x90
최근 소마 프로젝트를 진행하면서 jenkins로 빌드하면서 코드정적분석인 sonarqube하고 jacoco로 테스트커버리지를 분석하는 이야기를
멘토링 뿐만아니라 주위에서도 많이 들었다.
그래서 이번 소마프로젝트에서도 jacoco를 통해 테스트커버리지가 60프로이상을 목표로 잡아보고싶다.
이를 계기로 한번 적용해보겠습니다.
1. JaCoCo 플로그인 등록
plugins {
id 'jacoco'
}
2. jacoco가 만들어지는 경로를 설정
// Report config
// 리포트의 저장 경로를 설정합니다.
jacocoTestReport {
reports {
html.enabled true
xml.enabled false
csv.enabled false
html.destination file("jacoco/jacocoHtml")
xml.destination file("jacoco/jacoco.xml")
}
excludedClassFilesForReport(classDirectories)
}
3. 테스트 커버리지 통과 범위 및 퍼센테이지 설정, 포함시킬 패키지명.
// 커버리지 범위 및 퍼센테이지 설정
// covereratio 테스트코드로 커버된 브래친의 비율
// counter 어떤 지표를 사용하여 커버리지를 측정할지
jacocoTestCoverageVerification {
violationRules {
rule {
element = 'CLASS'
includes = ['com.tbfp.teamplannerbe.domain.**.service.*'] // Specify your method name here
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.40
}
}
}
}
4.테스트커버리지에 제외시킬 패키지
// jacoco Report에서 제외하기
private excludedClassFilesForReport(classDirectories) {
classDirectories.setFrom(
files(classDirectories.files.collect {
fileTree(dir: it, exclude: [
"**/Q*",
"**/*Dto*",
"**/*Application*",
"**/*Config*",
"**/*dto*",
"**/*entity*",
"**/*config*",
"**/*common*/",
"**/*controller*",
"**/*repository*",
"**/*condition*",
"**/*crawler*"
])
})
)
}
5. 마지막으로 테스트가 끝나고 나면 jacocoTestCoverageVerification 실행 및 jecocoTestReport 를 실행하여 index.html 생성
tasks.named('test') {
useJUnitPlatform()
finalizedBy jacocoTestCoverageVerification // Add this line to execute jacocoTestCoverageVerification after the test
finalizedBy jacocoTestReport // Add this line to execute jacocoTestReport after the test
}
6. 이렇게 설정을 하고 나의 테스트를 전부 실행시켜보았다. jacoco라는 폴더가 생성되고
7. jacoco클릭 -> index.html을 크롬으로 실행!
현재 우리 서비스의 테스트커버리지 상태이다...
약 46퍼정도 나오는 것 같다. 아직 60퍼이상이 될려면 테스트코드를 좀 더 효율적이고 꼼꼼하고
각 기능마다 세세하게 테스트를 작성해야겠다는 생각이 들었다.
728x90