流水线部署中,单元测试覆盖率是一项考量的基本指标.本文介绍,在springboot3项目中,如何集成jacoco插件,以便在流水线SonarQube 中展示单元测试覆盖率报告.
主要注意的问题:
1.在引用依赖的时候,jmokit的依赖要先于junit的依赖。
java
<!-- jmockit -->
<dependency>
<groupId>mockit</groupId>
<artifactId>jmockit</artifactId>
<version>${jmockit.version}</version>
<scope>test</scope>
</dependency>
<!-- junit 5-->
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>
2.surefire-maven-plugin,需要指定jmockit jar以及生成jacoco.exec位置,便于生成测试报告.
java
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<builder>paketobuildpacks/builder-jammy-base:latest</builder>
</image>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<!-- 配置Jacoco Maven插件 -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<!-- jacoco生成报告时,排除和统计的文件 -->
<excludes>
<exclude>**/dto/**</exclude>
<exclude>**/domain/**</exclude>
</excludes>
<includes>
<include>**/service/**</include>
<include>**/util/**</include>
</includes>
</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>
<!-- 配置Surefire插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version> <!-- 使用支持Spring Boot 3的Surefire版本 -->
<configuration>
<argLine>
<!-- jdk 9 及以后,需要指定 jmockit-->
-javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
<!-- 指定jacoco.exec的位置,用于生成jacoco报告 -->
-javaagent:${settings.localRepository}/org/jacoco/org.jacoco.agent/${jacoco.version}/org.jacoco.agent-${jacoco.version}-runtime.jar=destfile=${project.basedir}/target/jacoco.exec
</argLine>
</configuration>
</plugin>
更过,demo可以自行下载。