Test

JaCoCo

잔망루피 2023. 4. 20. 21:41

JaCoCo 플러그인은 Java 코드에 대한 code coverage metrics를 제공한다.

아래의 모든 코드는 Gradle 8.1 버전을 기준으로 작성됨

 

Tasks

  • Java 플러그인이 적용된 프로젝트의 경우 JaCoCo 플러그인은 아래와 같은 태스크를 자동으로 추가
    • jacocoTestReport
      • 테스트 작업에 대한 code coverage report를 생성
    • jacocoTestCoverageVerification
      • 테스트 작업에 대해 지정된 규칙에 따라 code coverage metrics 검증

 

 

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')
    }
}

code coverage report 예시

 

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

 

The JaCoCo Plugin

The JaCoCo plugin adds the following dependency configurations: Table 2. JaCoCo plugin - dependency configurations Name Meaning jacocoAnt The JaCoCo Ant library used for running the JacocoReport and JacocoCoverageVerification tasks. jacocoAgent The JaCoCo

docs.gradle.org

 

반응형

'Test' 카테고리의 다른 글

WebMvcTest 에러  (2) 2023.03.08