如何在服务器上执行 webApplication 时获取 JaCoCo 检测代码覆盖率
How to get JaCoCo instrumentation code coverage while executing webApplication on server
我想在实时应用程序上执行某些场景时获得代码覆盖率报告(或跟踪应用程序的控制器流),即当应用程序在服务器中 运行ning 时,所以我参考了官方 Jacoco documentation 休假
作为第一步,我尝试将 jacoco 代理绑定到应用程序 运行ning 端口
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
然后它打印为 fallows
[INFO] Connecting to localhost/127.0.0.1:6300
当我停止服务器时 jacoco.exec 在我通过执行以下命令请求生成 jacoco 报告后生成到已知位置
mvn jacoco:report
我终于收到了报告,但是当我打开 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
然后使用以下命令清理并构建项目。
mvn clean install
一旦完成,从项目的目标文件夹中获取 .war 文件并保存在 wildfly serverwildfly-9.0.0.CR2/standalone/deployments/
文件夹中
部署 .war 后,转到 /wildfly-9.0.0.CR2/bin/
文件夹和 execute/run ./standalone.sh
文件,或者根据平台,您可以 运行 .dat/.sh
文件
部署项目并启动服务器后,执行以下命令
mvn jacoco:dump
它显示为 listening/connected 到 localhost/127.0.0.1:6300
然后执行一些测试场景并执行以下maven命令
mvn jaococ:report
最终将生成覆盖率为 0% 的报告!。
下载的项目可以在MKyong website
中找到
请帮助我获取代码覆盖率报告,我们将不胜感激。
JaCoCo 需要与执行时使用的完全相同的 class 文件来生成报告,因此
- 如果报告完全为空,则 class未提供
- 如果报告包含 classes 但它们的覆盖率为 0%,则它们与运行时使用的 classes 不匹配 - 这与 JaCoCo 文档中的其他相关信息一起描述在第 http://www.jacoco.org/jacoco/trunk/doc/classids.html
页上
并在任何一种情况下检查日志中是否存在警告。
更新问题
这是我所做的:
- 下载 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
以获取更新的报告:
我想在实时应用程序上执行某些场景时获得代码覆盖率报告(或跟踪应用程序的控制器流),即当应用程序在服务器中 运行ning 时,所以我参考了官方 Jacoco documentation 休假
作为第一步,我尝试将 jacoco 代理绑定到应用程序 运行ning 端口
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
然后它打印为 fallows
[INFO] Connecting to localhost/127.0.0.1:6300
当我停止服务器时 jacoco.exec 在我通过执行以下命令请求生成 jacoco 报告后生成到已知位置
mvn jacoco:report
我终于收到了报告,但是当我打开 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
然后使用以下命令清理并构建项目。
mvn clean install
一旦完成,从项目的目标文件夹中获取 .war 文件并保存在 wildfly serverwildfly-9.0.0.CR2/standalone/deployments/
文件夹中
部署 .war 后,转到 /wildfly-9.0.0.CR2/bin/
文件夹和 execute/run ./standalone.sh
文件,或者根据平台,您可以 运行 .dat/.sh
文件
部署项目并启动服务器后,执行以下命令
mvn jacoco:dump
它显示为 listening/connected 到 localhost/127.0.0.1:6300
然后执行一些测试场景并执行以下maven命令
mvn jaococ:report
最终将生成覆盖率为 0% 的报告!。
下载的项目可以在MKyong website
中找到请帮助我获取代码覆盖率报告,我们将不胜感激。
JaCoCo 需要与执行时使用的完全相同的 class 文件来生成报告,因此
- 如果报告完全为空,则 class未提供
- 如果报告包含 classes 但它们的覆盖率为 0%,则它们与运行时使用的 classes 不匹配 - 这与 JaCoCo 文档中的其他相关信息一起描述在第 http://www.jacoco.org/jacoco/trunk/doc/classids.html 页上
并在任何一种情况下检查日志中是否存在警告。
更新问题
这是我所做的:
- 下载 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
以获取更新的报告: