JaCoCo(Java Code Coverage)는 Java 애플리케이션의 코드 커버리지를 측정하는 데 사용되는 오픈 소스 도구입니다. JaCoCo는 코드의 어느 부분이 테스트되고, 어느 부분이 테스트되지 않는지에 대한 정보를 제공합니다. 이를 통해 테스트의 완성도를 평가하고, 테스트 커버리지를 개선할 수 있습니다.
JaCoCo의 주요 기능
- 코드 커버리지 측정: JaCoCo는 클래스, 메서드, 라인, 분기, 명령어 수준에서 코드 커버리지를 측정합니다.
- 리포트 생성: HTML, XML, CSV 형식의 다양한 리포트를 생성하여 코드 커버리지 결과를 시각적으로 제공합니다.
- 통합: Maven, Gradle, Ant, Jenkins와 같은 빌드 도구 및 CI/CD 시스템과 쉽게 통합할 수 있습니다.
- 바이트코드 계측: JaCoCo는 바이트코드 계측을 사용하여 코드 커버리지를 측정합니다. 이는 소스 코드를 수정하지 않고도 커버리지 측정이 가능하다는 의미입니다.
- 런타임 측정: JaCoCo는 애플리케이션 실행 중에 코드 커버리지를 측정할 수 있으며, 이를 통해 실제 실행 환경에서의 커버리지 데이터를 얻을 수 있습니다.
JaCoCo 사용 예제
Gradle 플러그인 추가
build.gradle 파일에 JaCoCo 플러그인을 추가합니다.
plugins {
id 'java'
id 'jacoco'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
finalizedBy jacocoTestReport // 테스트가 끝난 후 리포트를 생성하도록 설정
}
jacocoTestReport {
dependsOn test // 테스트 태스크가 실행된 후 리포트 생성
reports {
xml.required = true
html.required = true
}
}
JaCoCo 리포트 생성
Gradle 빌드를 실행하면 JaCoCo가 테스트 실행 동안 코드 커버리지를 측정하고 리포트를 생성합니다.
./gradlew clean test jacocoTestReport
빌드가 완료되면 build/reports/jacoco/test/html/index.html 파일을 열어 HTML 리포트를 확인할 수 있습니다.
JaCoCo 설정 및 리포트 구성
jacocoTestReport 태스크를 사용하여 리포트를 구성할 수 있습니다. 여기서는 XML 및 HTML 리포트를 생성하도록 설정했습니다. 필요에 따라 다른 형식의 리포트를 추가할 수도 있습니다.
jacocoTestReport {
dependsOn test
reports {
xml.required = true
csv.required = false
html.outputLocation = file("${buildDir}/jacocoHtml")
}
}
JaCoCo의 리포트
JaCoCo 리포트는 다음과 같은 정보를 포함합니다.
- 라인 커버리지(Line Coverage): 각 코드 라인이 테스트된 비율을 나타냅니다.
- 분기 커버리지(Branch Coverage): 조건문(if, switch 등)의 각 분기가 테스트된 비율을 나타냅니다.
- 메서드 커버리지(Method Coverage): 각 메서드가 테스트된 비율을 나타냅니다.
- 클래스 커버리지(Class Coverage): 각 클래스가 테스트된 비율을 나타냅니다.
JaCoCo 리포트의 HTML 형식은 시각적으로 이해하기 쉽게 구성되어 있으며, 어떤 부분이 테스트되지 않았는지 쉽게 식별할 수 있습니다.
Jenkins와 JaCoCo 함께 유용하게 사용하기!!
Jenkins와 JaCoCo를 함께 사용하면 코드 커버리지 리포트를 자동으로 생성하고, 이를 CI/CD 파이프라인에 통합하여 코드 품질을 지속적으로 모니터링할 수 있습니다. 아래는 Jenkins와 JaCoCo를 함께 사용하는 방법에 대한 단계별 가이드입니다.
1. Jenkins 설정
Jenkins 설치 및 설정
먼저, Jenkins를 설치하고 실행합니다. 설치 방법은 운영 체제에 따라 다르며, Jenkins 공식 사이트에서 상세한 설치 가이드를 참조할 수 있습니다.
Jenkins 플러그인 설치
Jenkins에서 JaCoCo를 사용하려면 JaCoCo 플러그인을 설치해야 합니다.
- Jenkins 관리 페이지로 이동합니다.
- "Manage Jenkins"를 클릭합니다.
- "Manage Plugins"를 클릭합니다.
- "Available" 탭에서 "JaCoCo Plugin"을 검색하고 선택한 후 설치합니다.
2. Gradle 프로젝트 설정
Gradle 프로젝트에 JaCoCo 추가
build.gradle 파일에 JaCoCo 플러그인을 추가하고, 커버리지 리포트를 생성하도록 설정합니다.
plugins {
id 'java'
id 'jacoco'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
finalizedBy jacocoTestReport // 테스트 후에 JaCoCo 리포트 생성
}
jacocoTestReport {
dependsOn test // 테스트 실행 후 리포트 생성
reports {
xml.required = true
html.required = true
}
}
3. Jenkins 빌드 설정
Jenkins에서 새 빌드 작업 생성 |
|
소스 코드 관리 설정 |
Jenkins에서 소스 코드 저장소(Git, SVN 등)를 설정합니다.
|
빌드 설정 |
Jenkins에서 빌드 스크립트를 설정합니다.
|
포스트 빌드 액션 설정 |
JaCoCo 커버리지 리포트를 Jenkins에서 볼 수 있도록 설정합니다.
|
4. 빌드 실행 및 결과 확인
- Jenkins 대시보드에서 새로 생성한 빌드 작업을 클릭합니다.
- "Build Now"를 클릭하여 빌드를 실행합니다.
- 빌드가 완료되면 "Build History"에서 해당 빌드를 클릭합니다.
- "JaCoCo Coverage Report"를 클릭하여 커버리지 리포트를 확인합니다.
5. 커버리지 기준 설정 (선택 사항)
커버리지 기준을 설정하여 일정 커버리지 이하의 빌드가 실패하도록 설정할 수 있습니다.
- "Post-build Actions" 섹션에서 "Add post-build action"을 클릭합니다.
- "Configure JaCoCo thresholds"를 선택합니다.
- "Minimum Instruction Coverage", "Minimum Branch Coverage" 등 원하는 기준을 설정합니다.
이렇게 설정하면, 코드 커버리지가 설정한 기준 이하일 경우 빌드가 실패하고 알림을 받을 수 있습니다.
Jenkins와 JaCoCo를 함께 사용하면 코드 커버리지를 지속적으로 모니터링하고, 코드 품질을 높이는 데 큰 도움이 됩니다. Jenkins의 자동화된 빌드와 JaCoCo의 커버리지 리포트를 통해 코드 변경 사항이 커버리지에 미치는 영향을 쉽게 파악할 수 있으며, 이를 기반으로 테스트 커버리지를 지속적으로 개선할 수 있습니다.
'JAVA' 카테고리의 다른 글
HikariCP Oracle 데이터베이스와의 커넥션 유효성을 검사 성능 최적화!! (0) | 2024.07.15 |
---|---|
ZGC 기본 개념 알아보기 (0) | 2024.07.15 |
[TDD] UnitTest(단위 테스트)란 무엇인가? (0) | 2024.07.15 |
[JAVA] Thread Local이란 무엇인가? 기본 개념부터 활용까지! (0) | 2024.06.05 |
[JAVA] JVM GC(Garbage Collection)이란 무엇인가? 대표 알고리즘 알아보기! (0) | 2024.05.26 |