首页 > 解决方案 > API代码覆盖率的Jacoco集成测试

问题描述

Jacoco 是否为 API 的集成测试提供代码覆盖率?也就是说,我有一个在本地运行的应用程序实例,并且我进行了集成测试,其中我点击了正在运行的应用程序实例提供的 api。在这种情况下,我可以使用 Jacoco 来获取运行集成测试时覆盖了多少行正在运行的应用程序实例?

我已经尝试过 Jacoco 的 maven 插件的 prepare-agent-integration 和 report-integration 目标。但是他们将代码覆盖率设为 0。我认为这是因为 jacoco 仅测量当前运行的实例的代码覆盖率,而不是其 api 被命中的实例。

标签: jacocojacoco-maven-plugin

解决方案


我在运行服务时忘记运行 javaagent。使用 javaagent 和 output=tcpserver 运行 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


推荐阅读