14

我想使用JaCoCo和 Sonar 工具测量集成测试的代码覆盖率。

为此,我启动了配置了 JaCoCo 代理的 Tomcat 5.5,以便从 JaCoCo 获取转储文件。

因此,我为此设置了JAVA_OPTS

set JAVA_OPTS=-Xrs -XX:MaxPermSize=256m -XX:PermSize=256m -XX:NewRatio=3 -Xms512m -Xmx1024m -XX:+UseParallelGC -javaagent:C:\dev\servers\jacoco-agent.jar=destfile=C:\dev\servers\jacoco.exec,append=true,includes=my.application.*

当我启动Tomcat时,C:\dev\servers\jacoco.exec会生成文件,但没有填充任何数据。

我在服务器的配置中忘记了什么?

问候。

4

3 回答 3

13

我意识到 2 年前当这个问题被问到时,这可能不是一个选项,但目前您有一些其他选项可用于在不关闭 Tomcat(或任何配备 JaCoCo java 代理的 JVM)的情况下获取 JaCoCo 执行数据。

首先看一下 JaCoCo Java 代理的当前文档:http: //www.eclemma.org/jacoco/trunk/doc/agent.html

您可以使用 JaCoCo 代理上的output=tcpserver选项让 Java 代理侦听命令。您可以设置address= * 让 tcpserver 在所有接口上侦听,您可以设置port=6300参数来选择 tcpserver 应该侦听的端口。

通过 tcpserver,可以指示 JaCoCo Java 代理在您请求时向您发送数据。

如果您的 JVM 当前正在公开 JMX,您可以使用另一个选项,而无需打开其他端口。通过设置jmx=true选项,JaCoCo java 代理会公开一个您可以与之交互的 MBean。

如果您使用 maven,您可以查看我最近编写的插件,以便在运行时从远程 JVM 收集 JaCoCo 数据。该插件的项目位于:
https ://github.com/mattcj/jacocotogo

于 2013-11-19T21:00:06.897 回答
9

据我记得 - 文件将在 Tomcat 关闭期间填充。

于 2011-10-02T19:48:52.890 回答
8
于 2018-11-13T18:30:11.560 回答