jacoco

김민창·2022년 7월 27일
0
post-thumbnail
post-custom-banner

코드 커버리지란

코드 커버리지는 소스 코드를 기반으로 수행하는 화이트 박스 테스트
소프트웨어의 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표 중 하나이다.
테스트를 진행했을때 코드 자체가 얼마나 실행되었느냐고, 이는 수치를 통해 확인을 할 수 있다

출처 및 더 자세한 설명


jacoco란

Java의 코드 커버리지를 체크하는 라이브러리
테스트코드를 돌리고 그 커버리지 결과를 보기 좋게 html, xml, csv 같은 리포트로 생성
출처 및 더 자세한 설명


build.gradle 설정

// 플러그인 추가
plugins {
    id 'jacoco'
}

test {
    useJUnitPlatform()
    finalizedBy jacocoTestReport
}

jacoco {
	// jacoco 버전
    toolVersion = "0.8.8"
}

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

	// 프로젝트가 평가된 후 실행할 수 있도록 하는 gradle 라이프 사이클에 관한 메서드
    afterEvaluate {
    	// 커버리지가 리포트로 작성할 소스 파일
        classDirectories.setFrom(
     				// 지정된 파일을 포함하는 ConfigurableFileCollection 타입 반환
                    files(classDirectories.files.collect {
                    // classDirectories의 파일들을 돌면서 계층 구조로 된 파일 컬렉션인 file tree 생성
                    fileTree(dir: it, excludes: [
                        'com/hiworks/project/folder01/*',
                        'com/hiworks/project/folder02/*'
                    ])
                })
        )
    }

    finalizedBy jacocoTestCoverageVerification
}

jacocoTestCoverageVerification {
    violationRules {
        rule {
        	// 해당 rule의 활성화 여부
            enabled = true
            // 측정 단위
            element = 'CLASS'
            limit {
            	// 커버리지 측정의 최소 단위
                counter = 'LINE'
                // 측정한 counter의 정보를 어떠한 방식으로 보여줄지
                value = 'COVEREDRATIO'
                // count값을 value에 맞게 표현했을 때 통과할 최소 값(0.00~1.00)
                minimum = 0.0
            }
            // verity에서 제외할 클래스
            excludes = [
                    'com/hiworks/project/folder01/*',
                    'com/hiworks/project/folder02/*'
            ]
        }
    }
}

추가적으로 자주 사용하는 getter, setter, builder는 테스트하기 싫다면
lombok.config를 root에 두고 다음과 같이 작성하면 된다

lombok.addLombokGeneratedAnnotation = true
profile
개발자 팡이
post-custom-banner

0개의 댓글