使用 Tomcat 上的 JaCoCo Java 代理获取我的应用程序的代码覆盖率

2022-09-03 05:09:40

我想使用 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

在服务器的配置中是否遗漏了某些内容?

问候。


答案 1

我意识到这在2年前被问到这个问题时可能不是一个选择,但是现在你有一些其他选项可以在不关闭Tomcat(或使用JaCoCo Java代理工具的任何JVM)的情况下获取JaCoCo执行数据。

首先看一下JaCoCo Java Agent的当前文档: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


答案 2

据我所知 - 文件将在Tomcat关闭期间填充。


推荐