코드 커버리지 측정 (with jacoco)
Code Coverage 란?
- 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타내는 지표중 하나.
- 소프트웨어 테스트를 진행했을 때 코드 자체가 얼마나 실행되었는지 숫자로 볼 수 있다.
코드 작성
public class Moim {
int maxAttendees;
int numberOfEnrollment;
public boolean isEnrollmentFull() {
if (maxAttendees == 0) {
return false;
}
if (maxAttendees < numberOfEnrollment) {
return false;
}
return true;
}
}
테스트 코드 작성
public class MoimTest {
@Test
public void isFull() {
Moim moim = new Moim();
moim.maxAttendees = 100;
moim.numberOfEnrollment = 10;
Assert.assertTrue(moim.isEnrollmentFull());
}
}
pom.xml에 플러그인 추가
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.4</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>
근데 이런 툴을 어떻게 만들 수 있었을까....??????
단순하게 말하자면
- 바이트코드에서 코드 커버리지를 챙겨야 하는 부분의 개수를 세어놓는다.
- 코드가 실행될 때 그중에 몇 개가 지나갔는지 카운팅을 한다.
커버리지 만족 못할 시 빌드 실패하게 하는 방법
<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>
'Java > Java' 카테고리의 다른 글
(JAVA) 바이트코드 조작(3) - javaagent (0) | 2019.12.22 |
---|---|
(JAVA) 바이트코드 조작(2) (0) | 2019.12.22 |
(JAVA) 클래스로더 (0) | 2019.12.21 |
(JAVA) JVM 구조 (0) | 2019.12.21 |
(JAVA) 자바, JVM, JDK 그리고 JRE (0) | 2019.12.21 |