본문 바로가기
JAVA/SpringBoot

[SpringBoot] Jacoco 코드 작성

by 설총이 2023. 8. 8.
1. pom.xml
<!-- Test Coverage -->
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.5</version>
        <configuration>
          <!--
          <rules>
            <rule>
              <element>BUNDLE</element>
              <limits>
                <limit>
                  <counter>INSTRUCTION</counter>
                  <value>COVEREDRATIO</value>
                  <minimum>0.40</minimum>
                </limit>
              </limits>
            </rule>
            <rule>
              <element>METHOD</element>
              <limits>
                <limit>
                  <counter>LINE</counter>
                  <value>TOTALCOUNT</value>
                  <maximum>30</maximum>
                </limit>
              </limits>
            </rule>
          </rules>
          -->
          <excludes>
            <exclude>**/DeleteController.class</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>report</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

 

2. Maven > [프로젝트] > Lifecycle > verify 클릭 (전체 빌드테스트)

 

3. Run 로그 확인

 

4. [프로젝트] > target > site > index.html 클릭

 

5. 프로젝트 이름의 사이트 오픈

 

6. com.seypak.study.intellij.controller 확인

> DeleteController제외 확인 ( exclude에 선언된 컨트롤러 제외됨 )

 

7. ProductController > 커버리지 확인

> 초록색: 정상적으로 실행됨.
> 노랑색:  false로 들어오는 결과값을 만들어냈기에 실행은 되었음.
> 빨강색: 오류가 발생하는 상황에 대한 테스트 케이스가 없어 발생하였음.

 

- Sonarqube
소나큐브는 20개 이상의 프로그래밍 언어에서 버그, 코드 스멜, 보안 취약점을 발견할 목적으로 정적 코드 분석으로 자동 리뷰를 수행하기 위한 지속적인 코드 품질 검사용 오픈 소스 플랫폼이다

일반적으로 이런 jacoco 플러그인의 코드커버리지 결과에 대한 통합관리를 위해 sonarqube 플랫폼을 사용
지속적으로 빌드/배포를 할 때, jacoco에서 sonarqube로 결과물을 전달해 통합적으로 관리함.