본문 바로가기

JAVA

[테스트] JaCoCo란 무엇인가?

728x90
반응형

 

JaCoCo(Java Code Coverage)는 Java 애플리케이션의 코드 커버리지를 측정하는 데 사용되는 오픈 소스 도구입니다. JaCoCo는 코드의 어느 부분이 테스트되고, 어느 부분이 테스트되지 않는지에 대한 정보를 제공합니다. 이를 통해 테스트의 완성도를 평가하고, 테스트 커버리지를 개선할 수 있습니다.

JaCoCo의 주요 기능

  1. 코드 커버리지 측정: JaCoCo는 클래스, 메서드, 라인, 분기, 명령어 수준에서 코드 커버리지를 측정합니다.
  2. 리포트 생성: HTML, XML, CSV 형식의 다양한 리포트를 생성하여 코드 커버리지 결과를 시각적으로 제공합니다.
  3. 통합: Maven, Gradle, Ant, Jenkins와 같은 빌드 도구 및 CI/CD 시스템과 쉽게 통합할 수 있습니다.
  4. 바이트코드 계측: JaCoCo는 바이트코드 계측을 사용하여 코드 커버리지를 측정합니다. 이는 소스 코드를 수정하지 않고도 커버리지 측정이 가능하다는 의미입니다.
  5. 런타임 측정: 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 플러그인을 설치해야 합니다.

  1. Jenkins 관리 페이지로 이동합니다.
  2. "Manage Jenkins"를 클릭합니다.
  3. "Manage Plugins"를 클릭합니다.
  4. "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에서 새 빌드 작업 생성

  1. Jenkins 대시보드에서 "New Item"을 클릭합니다.
  2. 프로젝트 이름을 입력하고 "Freestyle project"를 선택한 후 "OK"를 클릭합니다.

소스 코드 관리 설정

Jenkins에서 소스 코드 저장소(Git, SVN 등)를 설정합니다.
  1. "Source Code Management" 섹션에서 "Git"을 선택합니다.
  2. 저장소 URL과 자격 증명을 입력합니다.

빌드 설정

Jenkins에서 빌드 스크립트를 설정합니다.
  1. "Build" 섹션에서 "Add build step"을 클릭합니다.
  2. "Invoke Gradle script"를 선택합니다.
  3. "Tasks" 필드에 clean test jacocoTestReport를 입력합니다.

포스트 빌드 액션 설정

JaCoCo 커버리지 리포트를 Jenkins에서 볼 수 있도록 설정합니다.
  1. "Post-build Actions" 섹션에서 "Add post-build action"을 클릭합니다.
  2. "Record JaCoCo coverage report"를 선택합니다.
  3. "Path to exec files", "Path to class directories", "Path to source directories", "Path to inclusion/exclusion patterns" 필드에 JaCoCo 리포트의 경로를 입력합니다.

 

4. 빌드 실행 및 결과 확인

  1. Jenkins 대시보드에서 새로 생성한 빌드 작업을 클릭합니다.
  2. "Build Now"를 클릭하여 빌드를 실행합니다.
  3. 빌드가 완료되면 "Build History"에서 해당 빌드를 클릭합니다.
  4. "JaCoCo Coverage Report"를 클릭하여 커버리지 리포트를 확인합니다.

5. 커버리지 기준 설정 (선택 사항)

커버리지 기준을 설정하여 일정 커버리지 이하의 빌드가 실패하도록 설정할 수 있습니다.

  1. "Post-build Actions" 섹션에서 "Add post-build action"을 클릭합니다.
  2. "Configure JaCoCo thresholds"를 선택합니다.
  3. "Minimum Instruction Coverage", "Minimum Branch Coverage" 등 원하는 기준을 설정합니다.

이렇게 설정하면, 코드 커버리지가 설정한 기준 이하일 경우 빌드가 실패하고 알림을 받을 수 있습니다.

Jenkins와 JaCoCo를 함께 사용하면 코드 커버리지를 지속적으로 모니터링하고, 코드 품질을 높이는 데 큰 도움이 됩니다. Jenkins의 자동화된 빌드와 JaCoCo의 커버리지 리포트를 통해 코드 변경 사항이 커버리지에 미치는 영향을 쉽게 파악할 수 있으며, 이를 기반으로 테스트 커버리지를 지속적으로 개선할 수 있습니다.

728x90
반응형