JaCoCo (Java Code Coverage)
JaCoCo(Java Code Coverage)는 Java 프로그램의 테스트 커버리지를 측정하는 오픈소스 도구입니다. JaCoCo는 Java 바이트코드 수준에서 동작하며, 코드의 실행 여부를 추적하여 테스트가 코드의 어느 부분까지 실행되는지를 분석합니다.
주요 특징
바이트코드 수준의 동작
JaCoCo는 Java 바이트코드에 직접 접근하여 커버리지를 측정합니다. 이는 소스 코드를 수정하지 않고도 커버리지를 수집할 수 있게 해줍니다.다양한 보고서 형식
JaCoCo는 HTML, XML, CSV 등의 형식으로 커버리지 보고서를 생성합니다. HTML 보고서는 시각적으로 보기 좋고, 소스 코드의 어느 부분이 실행되지 않았는지 색상으로 표시합니다.- 코드 커버리지 측정 방식
JaCoCo는 다양한 커버리지 메트릭을 제공합니다:- Line Coverage: 각 코드 줄의 실행 여부.
- Branch Coverage: 조건문(if, switch 등)의 각 분기 실행 여부.
- Instruction Coverage: 바이트코드 명령 실행 여부.
- Method Coverage: 메서드 호출 여부.
- Class Coverage: 클래스의 실행 여부.
- 통합 가능성
- 빌드 도구(Maven, Gradle)와 쉽게 통합 가능.
- CI/CD 도구(Jenkins, GitHub Actions 등)와도 통합 가능.
- IDE(IntelliJ IDEA, Eclipse 등)에서 플러그인 형태로 지원.
- 실행 중 수집 가능
JaCoCo는 JVM에 Agent를 추가하여 프로그램 실행 중 실시간으로 커버리지 데이터를 수집할 수 있습니다.
Gradle 프로젝트에서의 설정
build.gradle
파일에 다음과 같이 설정합니다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
plugins {
id 'jacoco'
}
jacoco {
toolVersion = "0.8.10"
}
tasks.test {
useJUnitPlatform()
finalizedBy jacocoTestReport
}
jacocoTestReport {
dependsOn test
reports {
html.required = true
xml.required = true
}
}
이후 gradle test
를 실행하면 build/reports/jacoco
디렉토리에 보고서가 생성됩니다.
JaCoCo 커버리지 보고서
주요 정보:
- 라인 커버리지(Line Coverage): 각 줄의 실행 여부를 백분율로 표시.
- 분기 커버리지(Branch Coverage): 조건문이 모든 경우에 대해 실행되었는지 확인.
- 분석 대시보드: 패키지, 클래스, 메서드별로 커버리지 상태 요약 제공.
HTML 보고서:
- 초록색: 테스트가 해당 코드를 실행함.
- 빨간색: 테스트가 해당 코드를 실행하지 않음.
- 다양한 커버리지 메트릭 지원.
- 손쉬운 설정 및 보고서 생성.
- 다양한 툴과의 통합 지원.
- 실행 중 데이터 수집 가능.
JaCoCo는 코드 품질 관리와 테스트 효율성을 높이는 데 중요한 도구입니다. 특히 CI/CD 파이프라인에 통합하면 지속적인 품질 개선에 기여할 수 있습니다.
This post is licensed under CC BY 4.0 by the author.