본문 바로가기
MSA/MSA관련기술

테스트 코드 커버리지 측정 (jacoco 활용)

by 문자메일 2022. 12. 18.

jacoco란?  JaCoCo Java Code Coverage Library

 

테스트 환경 : maven 프로젝트

 

0. 테스트 위한 maven 프로젝트 생성

 

1. pom.xml에 jacoco 플러그인 추가 필요 

<build>
  <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
    <plugins>
      
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.1.0</version>
      </plugin>
      
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.1</version>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>2.8.2</version>
      </plugin>
      
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.7.1</version>
      </plugin>
      <plugin>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>3.0.0</version>
      </plugin>
    </plugins>
  </pluginManagement>
  <plugins>
    <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>
  </plugins>
</build>

 

 

2. 클래스, 메서드 작성 및 해당 클래스 테스트 코드 작성

 

3. 터미널에서 mvn clean verify 명령어 수행하여 빌드, 그러면 jacoco 라이브러리도 함께 수행됨.

 

 

 

4. index.html 파일 실행하여보면, 테스트 코드의 커버리지가 얼마나 되는지 확인이 가능함.

빨간색은 아예 지나가지 않은 부분

노란색은 특정 조건일때만 지나간 부분

초록색은 지나간(확인한) 부분

 

5. pom.xml에 아래 부분 더 추가하면 바이트코드 커버리지가 50% 미만이면 build를 실패하도록 강제 설정 가능

<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>

'MSA > MSA관련기술' 카테고리의 다른 글

kafka(카프카)  (0) 2023.05.31
마이크로미터, 프로메테우스와 그라파나  (0) 2023.04.10
마이크로미터  (0) 2022.12.08
micro service 분산 추적 zipkin  (0) 2022.12.08
서킷브레이커 (Resilience4j) 환경설정 방법  (0) 2022.12.06

댓글