maven+jacoco java 代码测试覆盖率

本文介绍了如何在maven工程中结合jacoco进行Java代码的测试覆盖率检查。通过配置pom.xml文件,可以运行测试并生成覆盖率报告,报告默认位于 argetsitejacocoindex.html。此外,还提到了通过mvn test surefire-report:report命令生成测试用例报告,并且链接了一个更详细的教程,讨论了jacoco的实时插桩和离线插桩模式。

maven工程

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.jacoco.tutorial</groupId>
	<artifactId>jacoco-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<testFailureIgnore>true</testFailureIgnore>
			
在 Docker 容器中部署的 Jenkins 环境下集成 Jacoco 以获取测试覆盖率,主要涉及以下几个方面的配置和操作: ### 3.1 Jenkins 容器环境准备 确保 Jenkins 容器中已安装以下组件: - **Jacoco 插件**:在 Jenkins 的插件管理界面中安装 "Jacoco" 插件。 - **Maven 或 Gradle 构建工具**:确保 Jenkins 容器内安装了 Maven 或 Gradle,并配置了环境变量。 在 Dockerfile 中,可以基于官方 Jenkins 镜像扩展,安装所需的构建工具和依赖项。例如: ```Dockerfile FROM jenkins/jenkins:lts USER root RUN apt-get update && apt-get install -y maven USER jenkins ``` 构建并运行该镜像后,Jenkins 容器中即可支持 Maven 构建任务。 ### 3.2 项目配置与构建脚本 在 Jenkins 的自由风格项目中添加如下构建步骤: - **构建命令**:使用 `mvn clean test` 或 `mvn clean compile` 来生成 class 文件并运行测试,确保生成 jacoco.exec 文件 [^1]。 - **生成 jacoco.exec 文件**:Jacoco 插件会根据测试运行自动生成 jacoco.exec 文件,用于记录覆盖率数据。 在 `pom.xml` 中添加 Jacoco 插件配置,以确保生成覆盖率数据: ```xml <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.11</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>generate-exec</id> <phase>test</phase> <goals> <goal>dump-output</goal> </goals> </execution> </executions> </plugin> ``` ### 3.3 Jenkins 构建后操作配置 Jacoco 在 Jenkins 的构建后操作中,启用 Jacoco 插件生成覆盖率报告: - 在 Jenkins 项目的配置页面,找到 **Post-build Actions** 部分。 - 添加 **Record JaCoCo coverage report**。 - 配置 Jacoco.exec 文件路径(默认为 `**/target/jacoco.exec`)。 - 指定 class 文件路径(如 `**/target/classes`)和源代码路径(如 `**/src/main/java`)。 构建完成后,Jenkins 会在项目页面展示覆盖率报告,包括行覆盖率、分支覆盖率等指标。 ### 3.4 与 SonarQube 集成(可选) 如果希望将覆盖率数据上传至 SonarQube,需进行如下配置: - 在 Jenkins 项目中添加 SonarQube 扫描步骤。 - 配置 `sonar.java.binaries=$WORKSPACE/target` 以指向编译后的 class 文件路径 [^2]。 - 确保 SonarQube 服务器已安装 Jacoco 插件,并配置好项目属性。 示例 SonarQube 分析命令: ```bash mvn sonar:sonar \ -Dsonar.login=your-sonar-token \ -Dsonar.java.binaries=target \ -Dsonar.jacoco.reportPaths=target/jacoco.exec ``` ### 3.5 使用 Java Agent 模式收集覆盖率(高级) 对于需要在容器内运行的应用服务,可通过 Java Agent 模式实时收集覆盖率数据: - 启动应用时添加 Jacoco Agent 参数: ```bash -javaagent:/path/to/jacocoagent.jar=includes=*,output=tcpserver,port=9999,address=0.0.0.0,append=false ``` 此方式适用于远程覆盖率收集,Jenkins 可通过 TCP 端口获取 jacoco.exec 文件 [^3]。 ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值