Jacoco 를 이용한 코드 커버리지 테스트

By deuk9

코드 커버리지는 테스트가 얼마나 많은 코드 라인을 실행하는지를 나타내는 중요한 지표이다. Jacoco는 코드 커버리지를 측정하고 일정 수준에 도달하는지 검증하는 도구이다.

1. 설정

plugins {  
 
    id 'jacoco'  
}  
  
jacoco {  
    toolVersion ="0.8.8"  
}  
  
tasks.named('test') {  
    useJUnitPlatform()  
  
    jacoco{}  
    finalizedBy(tasks.jacocoTestReport)  
}  
tasks.jacocoTestReport{  
    reports {  
        xml.required = true  
        html.required = true  
        csv.required = false  
  
        xml.destination(file("build/jacoco/jacoco.xml"))  
        html.destination(file("build/jacoco/jacoco.html"))  
    }
    finalizedBy(tasks.jacocoTestCoverageVerification)  
}  
tasks.jacocoTestCoverageVerification {  
    violationRules {  
        rule {  
            enabled = true  
            element = "CLASS"  
  
            limit {  
                counter = "LINE"  
                value = "COVEREDRATIO"  
                minimum = BigDecimal.valueOf(0.5)  
            }  
            limit {  
                counter = "LINT"  
                value = "TOTALCOUNT"  
                maximum = BigDecimal.valueOf(100)  
            }
            excludes = List.of(  
                "*.controller.*",  
                "com.example.deuktest"  
            )  
        }   
     }
}
  • tasks.jacocoTestReport 는 테스트 후 결과값을 파일로 저장한다. 위의 샘플에선 xml , html 파일을 생성함.
    jacoco 테스트 결과

    jacoco 테스트 결과

  • tasks.jacocoTestCoverageVerification 는 검증에 대한 설정을 할 수 있다.
    1. Line 의 50% 를 커버하지 못하면 검증 실패
    2. 각 클래스의 라인수가 100줄이 넘으면 실패

참고 자료