728x90
반응형

테스트 코드를 열심히 작성했고, 이제 얼마나 잘 작성했는지 보기위해 Jacoco를 써보기로 했다.

 

1. Build gradle

build gradle에 아래 내용을 추가해주자.

 

plugins {
	id 'jacoco'
}

jacocoTestReport {
    reports {
        html.enabled true
        xml.enabled false
        csv.enabled true

        html.destination file("jacoco/jacocoHtml")
        xml.destination file("jacoco/jacoco.xml")
    }

    def Qdomains = []
    for(qPattern in "**/QA" .. "**/QZ"){
        Qdomains.add(qPattern+"*")
    }

    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: [] + Qdomains)
        }))
    }

    finalizedBy 'jacocoTestCoverageVerification'
}

jacocoTestCoverageVerification {
    def Qdomains = []
    for (qPattern in "*.QA".."*.QZ") {  // qPattern = "*.QA","*.QB","*.QC", ... "*.QZ"
        Qdomains.add(qPattern + "*")
    }
    violationRules {
        rule {
            // 'element'가 없으면 프로젝트의 전체 파일을 합친 값을 기준으로 한다.
            limit {
                // 'counter'를 지정하지 않으면 default는 'INSTRUCTION'
                // 'value'를 지정하지 않으면 default는 'COVEREDRATIO'
                minimum = 0.30
            }
        }

        rule {
            // 룰을 간단히 켜고 끌 수 있다.
            enabled = true

            // 룰을 체크할 단위는 클래스 단위
            element = 'CLASS'

            // 브랜치 커버리지를 최소한 90% 만족시켜야 한다.
            limit {
                counter = 'BRANCH'
                value = 'COVEREDRATIO'
                minimum = 0.90
            }

            // 라인 커버리지를 최소한 80% 만족시켜야 한다.
            limit {
                counter = 'LINE'
                value = 'COVEREDRATIO'
                minimum = 0.80
            }

            // 빈 줄을 제외한 코드의 라인수를 최대 200라인으로 제한한다.
            limit {
                counter = 'LINE'
                value = 'TOTALCOUNT'
                maximum = 200
            }

            // 커버리지 체크를 제외할 클래스들
            excludes = [
//                    '*.test.*',
            ] + Qdomains
        }
    }
}

 

2. gitignore

### jacoco ###
jacoco/

 

3. Test

테스트 코드를 동작해본다.

 

4. index.html

위 사진 경로에 생성된 index.html 파일을 열어본다.

참고

Gradle 프로젝트에 JaCoCo 설정하기 | 우아한형제들 기술블로그 (woowahan.com)

 

Gradle 프로젝트에 JaCoCo 설정하기 | 우아한형제들 기술블로그

{{item.name}} 안녕하세요. 상품시스템팀에서 서버 개발(..새발)을 하고 있는 연철입니다. 프로젝트 세팅 중에 찾아보고 삽질했던 내용들이 도움이 될까 하여 남깁니다. JaCoCo는 Java 코드의 커버리지

techblog.woowahan.com

 

728x90
반응형

+ Recent posts