Code Coverage
코드 커버리지
Last updated
Was this helpful?
코드 커버리지
Last updated
Was this helpful?
JaCoCo는 Java 코드의 커버리지를 체크하는 라이브러리이다.
테스트 코드를 돌리고 그 커버리지의 결과를 확인할 수 있도록 html, xml, csv 같은 리포트로 생성할 수 있다.
그리고 테스트의 결과를 내가 직접 설정한 커버리지 기준을 만족하는 지 확인할 수 있다.
커버리지의 결과를 통해서 개발된 프로젝트를 배포할 지 말지의 기준을 정할 수도 있다.
참고 사이트
Gradle 설정에 JaCoCo 플러그인 추가
플러그인 설정을 추가할 수도 있다.
테스트 리포트 저장 및 커버리지 체크
바이너리 커버리지 결과를 html 파일로 생성하여 눈으로 확인 가능
xml, csv 타입으로 내리는 경우 SonarQube 등과 연동도 가능하다.
커버리지 기준을 만족하는지 확인해 주는 task이다.
Junit5로 작성한 테스트 코드에 대한 커버리지 테스트
리포트 생성(jacocoTestReport
) 및 커버리지 체크(JacocoTestCoverageVerification
)를 실행
task 실행을 확인하기 위한 파라미터 추가(--console verbose
)
커버리지 체크 확인
커버리지 설정의 기준에 미치지 못해서 경고 표시나는 클래스
만들어진 리포트를 확인
코드 파일에서 커버가 된 라인은 초록색 놓친 부분은 빨간색으로 표시
단순하게 등록 테스트만 했기 때문에 save() 메서드만 초록색이고 나머지는 빨간색
노란색을 false에 대한 테스트만 이루어졌고 true에 대한 테스트가 이루어지지 않았기 때문이다.
jacocoTestReport
task와 jacocoTestCoverageVerification
task를 지정해주기 위한 task 생성
testCoverage의 내용은 dependsOn으로 test
, jacocoTestReport
, jacocoTestCoverageVerification를
실행한다고 설정
mustRunAfter
를 통해서 실행 순서를 정렬한다.
정렬 기준은 test
먼저 실행, 그 결과로 리포트를 생성(jacocoTestReport
), 커버리지가 원하는 기준 도달했는지 체크(jacocoTestCoverageVerification
)한다.
여기서 test -> jacocoTestReport -> jacocoTestCoverageVerification 의 순서를 지켜서 리포팅된 결과로 커버리지를 체크하지 않고 테스트된 결과를 리포팅되지 않은
결과를 커버리지 체크하는 문제를 일으키지 않도록 한다.
tasks 묶인거 확인
testCoverage task를 test task를 실행할 때마다 자동으로 JaCoCo task 들이 실행되도록 finalizedBy로 설정
커버리지의 설정은 jacocoTestCoverageVerification
task의 상세에서 설정한다.
이 task는 설정해 둔 커버리지 기준을 만족하는 코드를 짰는지 확인 할 수 있다.
violationRules
로 커버리지 기준을 설정하는 rule
을 정의
커버리지의 체크 기준이 되는
element
element
설명
BUNDLE(default)
패키지 번들
PACKAGE
패키지
CLASS
클래스
SOURCEFILE
소스파일
METHOD
메서드
couter 설정
counter
설명
LINE
빈 줄을 제외한 실제 코드의 라인 수
BRANCH
조건문 등의 분기 수
CLASS
클래스 수
METHOD
메서드 수
INSTRUCTION (default)
Java 바이트코드 명령 수
COMPLEXITY
복잡도
value 설정
value
설명
TOTALCOUNT
전체 개수
MISSEDCOUNT
커버되지 않은 개수
COVEREDCOUNT
커버된 개수
MISSEDRATIO
커버되지 않은 비율. 0부터 1 사이의 숫자로, 1이 100%
COVEREDRATIO (default)
커버된 비율. 0부터 1 사이의 숫자로, 1이 100%