Spring/문법

테스트 커버리지 - JaCoCo 설정

가지코딩 2025. 6. 11. 11:04

JaCoCo란?

Java Code Coverage의 약자로, 테스트 코드가 실제 애플리케이션 코드를 얼마나 실행했는지 측정해주는 도구.


build.gradle 설정

 

플러그인 적용

plugins {
    id 'jacoco' // Java Code Coverage
}

 

 

버전 및 리포트 경로 지정

jacoco {
    toolVersion = '0.8.13'
    reportsDirectory = layout.buildDirectory.dir('reports/jacoco')
}

 

 

테스트 후 커버리지 리포트 생성

tasks.named('test') {
    useJUnitPlatform()
    finalizedBy jacocoTestReport
}

 

 

커버리지 기준 설정 (빌드 실패 조건)

jacocoTestCoverageVerification {
    violationRules {
        rule {
            enabled = true
            element = 'CLASS'
            limit {
                counter = 'LINE'
                value = 'COVEREDRATIO'
                minimum = 0.5 // 50% 미만이면 실패
            }
            excludes = [
                '*.*Application' // 예외 대상 클래스
            ]
        }
    }
}

 

 

커버리지 리포트 생성 및 제외 대상 설정

jacocoTestReport {
    dependsOn test
    reports {
        xml.required = false
        csv.required = false
        html.outputLocation = layout.buildDirectory.dir('jacocoHtml')
    }

    finalizedBy(jacocoTestCoverageVerification)

    afterEvaluate {
        classDirectories.setFrom(
            files(classDirectories.files.collect {
                fileTree(dir: it, excludes: [
                    "**/*Application*"
                ])
            })
        )
    }
}

리포트 위치

  • HTML 리포트: build/jacocoHtml/index.html