跨Maven项目基于Karate测试生成Jacoco代码覆盖率报告方案咨询
跨Maven项目生成Jacoco代码覆盖率报告(主代码+Karate测试)
1. 配置主代码Maven项目
- 在主项目的
pom.xml中添加Jacoco插件,确保编译时生成覆盖率数据所需的class文件和源文件:<build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.11</version> <!-- 使用最新稳定版 --> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>verify</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> - 执行
mvn clean install,将主项目的jar包(包含class文件)和源文件安装到本地Maven仓库。
2. 配置Karate测试Maven项目
2.1 添加主项目依赖
在测试项目的pom.xml中引入主项目依赖,确保能加载主代码的class文件:
<dependencies> <dependency> <groupId>你的主项目groupId</groupId> <artifactId>你的主项目artifactId</artifactId> <version>主项目版本号</version> <scope>test</scope> </dependency> <!-- 保留原有Karate相关依赖 --> </dependencies>
2.2 配置Jacoco代理与覆盖率收集
在测试项目的pom.xml中添加Jacoco插件,配置测试时收集覆盖率数据:
<build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.11</version> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> <configuration> <destFile>${project.build.directory}/jacoco.exec</destFile> </configuration> </execution> </executions> </plugin> <!-- 配置Karate测试执行插件,确保Jacoco代理生效 --> <plugin> <groupId>com.intuit.karate</groupId> <artifactId>karate-maven-plugin</artifactId> <version>1.4.1</version> <!-- 匹配你的Karate版本 --> <executions> <execution> <id>karate-tests</id> <phase>test</phase> <goals> <goal>test</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
3. 运行测试并收集覆盖率数据
- 在测试项目根目录执行命令:
执行完成后,测试项目的mvn clean testtarget目录下会生成jacoco.exec覆盖率数据文件。
4. 生成主代码覆盖率报告
方法1:在主项目中导入测试数据
- 将测试项目的
jacoco.exec复制到主项目的target目录。 - 在主项目根目录执行命令:
完成后,主项目的mvn jacoco:reporttarget/site/jacoco目录下会生成HTML格式报告,打开index.html即可查看主代码覆盖率详情。
方法2:在测试项目中直接生成报告
- 修改测试项目的Jacoco插件配置,添加
report执行阶段并指定主代码路径:<execution> <id>report</id> <phase>post-test</phase> <goals> <goal>report</goal> </goals> <configuration> <sourceDirectories> <sourceDirectory>${project.basedir}/../主项目目录/src/main/java</sourceDirectory> </sourceDirectories> <classDirectories> <classDirectory>${settings.localRepository}/你的主项目groupId/你的主项目artifactId/版本号/classes</classDirectory> </classDirectories> <dataFile>${project.build.directory}/jacoco.exec</dataFile> <outputDirectory>${project.build.directory}/jacoco-report</outputDirectory> </configuration> </execution> - 执行命令:
完成后在测试项目的mvn clean test jacoco:reporttarget/jacoco-report目录查看报告。
5. 注意事项
- 确保主项目与测试项目使用的Jacoco版本一致,避免兼容性问题。
- 主代码更新后,需重新执行
mvn clean install更新本地依赖,再运行测试。 - 若主项目为多模块结构,需确保所有相关模块的class文件都被正确引用。
内容的提问来源于stack exchange,提问作者Rakesh Hazari
相关产品推荐
相关产品推荐

