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可以自行下载。

相关推荐
仰望星空@脚踏实地1 小时前
Spring Boot Web 服务单元测试设计指南
spring boot·后端·单元测试
一勺菠萝丶3 小时前
Spring Boot + MyBatis/MyBatis Plus:XML中循环处理List参数的终极指南
xml·spring boot·mybatis
RainbowSea4 小时前
问题:后端由于字符内容过长,前端展示精度丢失修复
java·spring boot·后端
风象南4 小时前
SpringBoot 控制器的动态注册与卸载
java·spring boot·后端
我是一只代码狗5 小时前
springboot中使用线程池
java·spring boot·后端
hello早上好5 小时前
JDK 代理原理
java·spring boot·spring
PanZonghui5 小时前
Centos项目部署之运行SpringBoot打包后的jar文件
linux·spring boot
沉着的码农6 小时前
【设计模式】基于责任链模式的参数校验
java·spring boot·分布式
zyxzyx6666 小时前
Flyway 介绍以及与 Spring Boot 集成指南
spring boot·笔记
一头生产的驴7 小时前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf