如何在服务器上执行 webApplication 时获取 JaCoCo 检测代码覆盖率

Raj*_*war 0 jacoco test-reporting jacoco-maven-plugin

当我在实时应用程序上执行某些场景时,即当应用程序在服务器中运行时,我想获得代码覆盖率报告(或跟踪应用程序的控制器流程),因此我参考了官方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  
Run Code Online (Sandbox Code Playgroud)

然后我启动了服务器并执行了一些测试场景,当时我还请求 jacoco 通过执行以下命令来获取转储

 mvn jacoco:dump
Run Code Online (Sandbox Code Playgroud)

当我首先执行上面的命令时,它显示如下java.net.BindException: Address already in use,然后它打印为休闲

[INFO] Connecting to localhost/127.0.0.1:6300
Run Code Online (Sandbox Code Playgroud)

当我停止服务器时,在我请求通过执行以下命令生成 jacoco 报告后,jacoco.exec已生成到已知位置

mvn jacoco:report
Run Code Online (Sandbox Code Playgroud)

最后我收到了报告,但当我打开 index.html 页面时,它显示了0%覆盖范围。

您可以通过以下示例 Spring MVC 项目重现我的困难

请从 Github下载 Spring MVC 项目https://github.com/mkyong/spring4-mvc-ajax-example

就我而言,我使用 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
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令清理并构建项目。

mvn clean install
Run Code Online (Sandbox Code Playgroud)

完成后,从项目的目标文件夹中获取 .war 文件并将其保存在 wildflyserverwildfly-9.0.0.CR2/standalone/deployments/文件夹中

部署 .war 后,转到/wildfly-9.0.0.CR2/bin/文件夹并执行/运行该./standalone.sh文件,或者根据平台,您可以运行该.dat/.sh文件

项目部署并启动服务器后,执行以下命令

mvn jacoco:dump
Run Code Online (Sandbox Code Playgroud)

它显示为正在收听/连接到localhost/127.0.0.1:6300

然后执行一些测试场景并执行以下maven命令

mvn jaococ:report
Run Code Online (Sandbox Code Playgroud)

最后将生成覆盖率为 0% 的报告!

下载的项目可以在MKyong网站找到

请帮助我获取代码覆盖率报告,任何帮助将不胜感激。

God*_*din 5

JaCoCo 需要与执行时使用的报告生成完全相同的类文件,因此

并在任何一种情况下检查日志中是否存在警告。

更新更新的问题

这是我所做的:

  • 下载并解压 JaCoCo 0.7.9 到/tmp/jacoco/jacoco-0.7.9
  • 下载并解压 Wildfly 9.0.0.CR2 到/tmp/jacoco/wildfly-9.0.0.CR2
  • https://github.com/mkyong/spring4-mvc-ajax-example克隆/tmp/jacoco/spring4-mvc-ajax-example并构建为mvn verify
  • 复制/tmp/jacoco/spring4-mvc-ajax-example/spring4-mvc-maven-ajax-example-1.0-SNAPSHOT.war/tmp/jacoco/wildfly-9.0.0.CR2/standalone/deployments
  • Wildfly 启动JAVA_OPTS=-javaagent:/tmp/jacoco/jacoco-0.7.9/lib/jacocoagent.jar=output=tcpserver ./standalone.sh并有足够的时间来部署应用程序
  • /tmp/jacoco/spring4-mvc-ajax-example在执行的目录中mvn org.jacoco:jacoco-maven-plugin:0.7.9:dump org.jacoco:jacoco-maven-plugin:0.7.9:report(请注意,所用代理的版本与 jacoco-maven-plugin 的版本相匹配),以便它创建/tmp/jacoco/spring4-mvc-ajax-example/jacoco.exec并报告/tmp/jacoco/spring4-mvc-ajax-example/site/jacoco报告
  • 打开http://localhost:8080/spring4-mvc-maven-ajax-example-1.0-SNAPSHOT/并执行一些操作
  • 再次执行mvn org.jacoco:jacoco-maven-plugin:0.7.9:dump org.jacoco:jacoco-maven-plugin:0.7.9:report以获得更新的报告: 更新报告