코드 커버리지는 어떻게 측정할까?
바이트 코드를 조작해서 측정하는 것이다.
바이트 코드를 읽어서 코드 커버리지 챙겨야 하는 부분의 수를 counting 하고
코드가 실행될 때 그 중에 몇개의 로직이 지나갔는지 counting을 해서 비교해주는 것이다.
테스트 코드를 통해 확인한 소스 코드의 비율을 %로 나타낸 것이다.
Moim이라는 클래스를 생성한다.
Moim이라는 클래스에는 isEnrommmentFull 이라는 메서드가 존재하는데,
해당 메서드에는 세가지 로직이 존재한다.
테스트 코드를 작성해보자.
테스트 커버리지를 측정해주는 라이브러리인 JaCoCo를 사용해보도록 하자.
https://www.eclemma.org/jacoco/trunk/doc/index.html
http://www.semdesigns.com/Company/Publications/TestCoverage.pdf
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>
메이븐 빌드
mvn clean verify
커버리지 만족 못할시 빌드 실패하도록 설정 (50% 이상 통과하지 못하면 빌드 실패하도록 설정)
<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>
아래 경로에 있는 index.html 파일을 열어보면 test coverage 결과를 확인할 수 있다.
isEnrollmentFull() 확인하면 일부만 테스트가 된 부분은 노란색으로 표시가 된다.
'공부방 > JAVA' 카테고리의 다른 글
[Java] 제네릭과 와일드카드 타입에 대해 쉽고 완벽하게 이해하기(공변과 불공변, 상한 타입과 하한 타입) (0) | 2023.05.04 |
---|---|
바이트코드 조작 - 모자에서 토끼를 꺼내는 마술 (0) | 2023.03.26 |
클래스로더 시스템 (0) | 2023.03.25 |
JVM 구조 (0) | 2023.03.24 |
자바, JVM, JDK 그리고 JRE (0) | 2023.03.23 |