** 테스트 커버리지가 높다고 회귀 내성이 잘 지켜지고 있다고 알 수 없기 때문에 테스트 커버리지를 100% 목표로 테스트 코드를 작성해서는 안된다.**
https://docs.gradle.org/current/userguide/jacoco_plugin.html#sec:configuring_the_jacoco_plugin
https://techblog.woowahan.com/2661/
plugins {
-- 추가
id 'jacoco'
}
-- 추가
jacoco {
toolVersion = "0.8.8"
reportsDirectory = layout.buildDirectory.dir('customJacocoReportDir')
}
-- 추가
test {
finalizedBy jacocoTestReport
}
-- 추가
jacocoTestReport {
reports {
xml.required = false
csv.required = false
html.outputLocation = layout.buildDirectory.dir('jacocoHTML')
}
dependsOn test // jacocoTestReport 에 test라는 종속성을 추가
finalizedBy 'jacocoTestCoverageVerification'
afterEvaluate {
classDirectories.setFrom(
files(classDirectories.files.collect {
fileTree(dir: it, excludes: [
"**/*Config*",
"**/*exception*",
"**/*model*",
"**/*Util*",
"**/com/xx/xx/config/**",
"**/com/xx/xx.class",
"**/com/xx/xx.class",
"**/com/xx/xx.class"
])
})
)
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
enabled = true
//코드 버커리지 체크 기준
element = 'CLASS'
limit {
counter = 'METHOD'
value = 'COVEREDRATIO'
// minimum = 0.5
}
}
}
}
java {
sourceCompatibility = '17'
}
ext['tomcat.version'] = '10.1.18'
repositories {
mavenCentral()
}
dependencies {
// 생략
}
tasks.named('test') {
useJUnitPlatform()
}
springBoot {
buildInfo()
}
JaCoCo 테스트 리포트는 테스트 결과를 리포트 형식으로 생성합니다. 사용자는 리포트 형식과 디렉토리를 지정할 수 있습니다.
JaCoCo 테스트 리포트 결과를 바탕으로 커버리지가 만족되는지 검증합니다. 이 과정에서 다음과 같은 옵션을 설정할 수 있습니다:
커버리지 체크 기준이 되는 요소는 다음 중 하나를 선택할 수 있습니다.
BUNDLE (기본값): 패키지 번들
PACKAGE: 패키지
CLASS: 클래스 (클래스 단위로 브랜치와 라인 커버리지 체크)
SOURCEFILE: 소스파일
METHOD: 메소드
카운터 (counter)
설정 가능한 카운터는 다음과 같습니다
LINE: 빈 줄을 제외한 실제 코드의 라인 수
BRANCH: 조건문 등의 분기 수
CLASS: 클래스 수
METHOD: 메소드 수
INSTRUCTION (기본값): Java 바이트코드 명령 수
COMPLEXITY: 복잡도 (자세한 복잡도 계산은 JaCoCo 문서 참고)
값 (value)
TOTALCOUNT: 전체 개수
MISSEDCOUNT: 커버되지 않은 개수
COVEREDCOUNT: 커버된 개수
MISSEDRATIO: 커버되지 않은 비율 (0부터 1 사이의 숫자로, 1이 100%)
COVEREDRATIO (기본값): 커버된 비율 (0부터 1 사이의 숫자로, 1이 100%)