코드 커버리지
- 테스트 코드가 내 소스 코드의 몇 퍼센트(%)를 커버하는지 확인하는 것입니다.
JaCoCo
pom.xml에 플러그인 추가
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
- prepare-agent: javaagent를 끼어넣는 것
- report: report를 생성하는 것
메이븐 빌드
mvn clean verify
- 테스트 코드를 실행하고 jacoco 플러그인이 실행됩니다.
- target -> site -> jacoco -> index.html이 확인됩니다.
- index.html을 실행합니다.
- 어느 부분이 테스트가 안되었고, 일부만 되었는지 확인할 수 있습니다.
원리
- 간략하게 설명하면 바이트코드를 읽어서 챙겨야할 코드들의 갯수를 세어놓고 코드가 실행이 될때 몇 개가 지나갔는지 카운팅을하고 비교를 해서 보여주는 원리입니다.
설정해놓은 커버리지 만족 못할시 빌드 실패하도록 설정
<execution>
<id>jacoco-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule>
<element>PACKAGE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.50</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
- jacoco 플러그인에 위 execution을 추가합니다.
- 위 예시는 50%가 되어야 빌드가 성공하게 됩니다.
- 현재 코드 커버리지가 76%이기 때문에 빌드에 성공합니다.
...
<minimum>0.90</minimum>
...
- 코드 커버리지가 만족하지 않기 때문에 실패하게 됩니다.
참조