Jacoco-Config
1 JaCoCo 설정
- JaCoCo 플러그인은 크게 4가지 주요 설정 영역이 있습니다:
jacoco { }
: 플러그인의 전역 설정 (Extension)jacocoTestReport
: 리포트 생성 TaskjacocoTestCoverageVerification
: 커버리지 검증 Tasktest { jacoco { } }
: 테스트 Task의 JaCoCo 관련 설정
2 플러그인 전역 설정 (Extension)
jacoco {
// JaCoCo 버전 설정
toolVersion = "0.8.12"
// 리포트 저장 위치 설정
reportsDirectory = layout.buildDirectory.dir('customJacocoReportDir')
// 특정 Task에 JaCoCo 적용
applyTo(myCustomTask)
}
- JaCoCo 플러그인의 기본적인 동작을 정의합니다.
- 버전과 리포트 디 렉토리 등 전역 설정을 관리합니다.
2.1 toolVersion
- 사용할 JaCoCo JAR 파일의 버전을 지정합니다.
- String 타입으로 제공됩니다.
- https://www.eclemma.org/jacoco/ 버전 참고
2.2 reportsDirectory
jacoco {
toolVersion = "0.8.12"
// 방법 1: 절대 경로 사용
reportsDirectory = file("$buildDir/reports/jacoco")
// 방법 2: 상대 경로 사용
reportsDirectory = layout.buildDirectory.dir('reports/jacoco')
// 방법 3: 프로젝트 루트 기준 경로 지정
reportsDirectory = layout.projectDirectory.dir('my-reports/jacoco')
}
- 리포트가 생성될 디렉토리를 지정합니다.
- 기본값:
${project.reporting.baseDir}/jacoco
- DirectoryProperty 타입으로 제공됩니다.
- 일반적으로는 build 디렉토리 내에 리포트를 생성하는 것이 좋습니다. 왜냐하면:
3 리포트 생성 Task (jacocoTestReport)
- JaCoCo는 테스트 실행 결과를 다양한 형식의 리포트로 변환합니다.
- 바이너리 형태의 실행 데이터(.exec)를 사람이나 도구가 읽을 수 있는 형태로 변환합 니다.
- jacocoTestReport는 테스트 실행 결과(.exec 파일)가 필요합니다.
- 기본적으로 test 태스크와의 의존관계가 설정되어 있지 않습니다.
- 명시적인 의존관계 설정이 필요합니다.
- jacocoTestReport Task를 통해 리포트 생성을 제어할 수 있습니다.
예시
jacocoTestReport {
// 테스트 Task 의존성
dependsOn test
reports {
// HTML 리포트 설정
html {
required = true
outputLocation = layout.buildDirectory.dir('jacocoHtml')
}
// XML 리포트 설정
xml {
required = false
}
// CSV 리포트 설정
csv {
required = false
}
}
}
3.1 HTML 리포트
html {
// 활성화 여부
required = true
// 출력 위치
outputLocation = layout.buildDirectory.dir('jacocoHtml')
}
- 웹 브라우저에서 확인할 수 있는 시각적 리포트입니다.
- 코드 커버리지를 직관적으로 파악할 수 있습니다.
- 색상 코드를 통해 커버리지 상태를 쉽게 확인할 수 있습니다:
- 빨간색: 커버되지 않은 코드
- 노란색: 일부만 커버 된 코드
- 녹색: 완전히 커버된 코드
3.2 XML 리포트
xml {
required = true
outputLocation = layout.buildDirectory.file('jacoco/report.xml')
}
- CI/CD 도구나 품질 분석 도구와의 통합에 사용됩니다.
- SonarQube 등의 코드 품질 분석 도구가 이 형식을 주로 사용합니다.
- 상세한 메트릭 정보를 포함합니다.