JaCoCo 플러그인은 Java 코드에 대한 code coverage metrics를 제공한다.
아래의 모든 코드는 Gradle 8.1 버전을 기준으로 작성됨
Tasks
- Java 플러그인이 적용된 프로젝트의 경우 JaCoCo 플러그인은 아래와 같은 태스크를 자동으로 추가
- jacocoTestReport
- 테스트 작업에 대한 code coverage report를 생성
- jacocoTestCoverageVerification
- 테스트 작업에 대해 지정된 규칙에 따라 code coverage metrics 검증
- jacocoTestReport
1. JaCoCo 플러그인 적용
plugins {
id 'jacoco'
}
2. code coverage reports와 test 실행 사이에 의존성을 정의하고 싶을 때
test {
finalizedBy jacocoTestReport // report is always generated after tests run
}
jacocoTestReport {
dependsOn test // tests are required to run before generating the report
}
3. JaCoCo 플러그인 설정
JaCoCo 플러그인은 jacoco로 프로젝트 확장을 추가한다.
빌드에서 JaCoCo 사용을 위한 기본값을 구성할 수 있다.
Gradle에서는 reportsDirectory의 기본값은 $buildDir/reports/jacoco
jacoco {
toolVersion = "0.8.8"
reportsDirectory = layout.buildDirectory.dir('customJacocoReportDir')
}
4. JaCoCo Report 설정
JacocoReport 테스크는 다양한 포맷으로 coede coverage report들을 생성하는 데 사용
jacocoTestReport {
reports {
xml.required = false
csv.required = false
html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
}
}
5. JaCoCo 테스크 확장의 기본 값
test {
jacoco {
enabled = true
destinationFile = layout.buildDirectory.file("jacoco/${name}.exec").get().asFile
includes = []
excludes = []
excludeClassLoaders = []
includeNoLocationClasses = false
sessionId = "<auto-generated value>"
dumpOnExit = true
classDumpDir = null
output = JacocoTaskExtension.Output.FILE
address = "localhost"
port = 6300
jmx = false
}
}
6. code coverage 데이터를 생성하는 어플리케이션 플러그인 사용
code coverage report는 build/reports/jacoco/applicationCodeCoverageReport/html/index.html에 있다.
plugins {
id 'application'
id 'jacoco'
}
application {
mainClass = 'org.gradle.MyMain'
}
jacoco {
applyTo run
}
tasks.register('applicationCodeCoverageReport', JacocoReport) {
executionData run
sourceSets sourceSets.main
}
참고 👇
https://docs.gradle.org/current/userguide/jacoco_plugin.html#sec:jacoco_report_configuration
반응형
'Test' 카테고리의 다른 글
WebMvcTest 에러 (2) | 2023.03.08 |
---|