【问题标题】:Jacoco integration test of API code coverageAPI代码覆盖率的Jacoco集成测试
【发布时间】:2026-02-03 00:10:01
【问题描述】:
Jacoco 是否为 API 的集成测试提供代码覆盖率?也就是说,我有一个在本地运行的应用程序实例,并且我进行了集成测试,在其中我点击了正在运行的应用程序实例提供的 api。在这种情况下,我可以使用 Jacoco 来获取运行集成测试时覆盖了多少行正在运行的应用程序实例?
我已经尝试过 Jacoco 的 maven 插件的 prepare-agent-integration 和 report-integration 目标。但他们将代码覆盖率设为 0。我认为这是因为 jacoco 仅测量当前运行的实例的代码覆盖率,而不是其 api 被命中的实例。
【问题讨论】:
标签:
jacoco
jacoco-maven-plugin
【解决方案1】:
我在运行服务时忘记运行 javaagent。使用带有 output=tcpserver 的 javaagent 运行 jar 文件,然后使用 Jacoco:dump 转储执行文件并使用 Jacoco:report 创建报告解决了这个问题。
java -javaagent:<path_to_agent>/org.jacoco.agent-0.7.9-runtime.jar=output=tcpserver,address=127.0.0.1 -jar myapp.jar
mvn clean verify -Pintegration-tests
mvn jacoco:report -DdataFile=./target/jacoco.exec
mvn jacoco:dump -Djacoco.address=localhost -Djacoco.destFile=./service/target/jacoco.exec