Springboot 3中,使用jacoco插件生成单元测试覆盖率报告

流水线部署中,单元测试覆盖率是一项考量的基本指标.本文介绍,在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可以自行下载。

相关推荐
JIngJaneIL9 小时前
基于Java酒店管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot
ZePingPingZe10 小时前
Spring Boot + MySQL读写分离实现方案
spring boot·mysql·adb
VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue健身房管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue心理健康管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
alien爱吃蛋挞10 小时前
【JavaEE】Spring Boot日志
java·数据库·spring boot
CodersCoder10 小时前
SpringBoot整合Spring-AI并使用Redis实现自定义上下文记忆对话
人工智能·spring boot·spring
vx_bisheyuange10 小时前
基于SpringBoot的在线互动学习网站设计
java·spring boot·spring·毕业设计
Kings9010 小时前
线程池导致的 shutdown失败的完整排查过程
java·spring boot
在坚持一下我可没意见10 小时前
Spring 后端安全双剑(下篇):JWT 无状态认证 + 密码加盐加密实战
java·开发语言·spring boot·后端·安全·spring