当我在实时应用程序上执行某些场景时,即当应用程序在服务器中运行时,我想获得代码覆盖率报告(或跟踪应用程序的控制器流程),所以我参考了官方Jacoco 文档并作为休闲
作为第一步,我尝试将 jacoco 代理绑定到应用程序运行端口
export MAVEN_OPTS=-javaagent:/home/user/.m2/repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runtime.jar=includes=*,output=tcpserver,port=6300,address=*,dumponexit=true
然后我已经启动了服务器并执行了一些测试场景我还请求 jacoco 通过执行以下命令来获取转储
mvn jacoco:dump
当我首先执行上述命令时,它显示为java.net.BindException: Address already in use
然后打印为休闲
[INFO] Connecting to localhost/127.0.0.1:6300
当我请求通过执行以下命令生成 jacoco 报告后,停止服务器jacoco.exec已生成到那里的已知位置
mvn jacoco:report
最后我得到了报告,但是当我打开 index.html 页面时,它显示了0%
覆盖范围。
您可以通过以下示例 Spring MVC 项目重现我的困难
请从 Github的https://github.com/mkyong/spring4-mvc-ajax-example下载 Spring MVC 项目
在我的情况下,我使用 WildFly 8.x 服务器来运行项目并将以下依赖项添加到下载的项目 pom.xml
maven-surefire-plugin of 2.19.1 version
jacoco-maven-plugin of 0.7.4.201502262128 version
junit of 4.12 version
然后使用以下命令清理并构建项目。
mvn clean install
完成后,从项目的目标文件夹中获取 .war 文件并保存在 wildflyserverwildfly-9.0.0.CR2/standalone/deployments/
文件夹中
部署 .war 后,转到/wildfly-9.0.0.CR2/bin/
文件夹并执行/运行./standalone.sh
文件,或者根据平台,您可以运行.dat/.sh
文件
部署项目并启动服务器后,执行以下命令
mvn jacoco:dump
它显示为正在收听/连接到localhost/127.0.0.1:6300
然后执行一些测试场景并执行以下maven命令
mvn jaococ:report
最后将生成覆盖率为 0% 的报告!。
下载的项目可以在 MKyong 网站上找到
请帮助我获取代码覆盖率报告,我们将不胜感激。