Java Jacoco代理-无输出

Java Jacoco代理-无输出,java,spring,docker,gradle,jacoco,Java,Spring,Docker,Gradle,Jacoco,所以这里是要点 我使用docker compose。我的应用程序只是REST服务的集合(SpringBoot和嵌入式tomcat),所以基本上我坚持测试端点。每当我想用测试构建项目(在一个单独的模块中),我都会使用gradle和GradleDocker compose插件。在编译后的完整构建过程中,docker compose gradle插件启动所有服务,等待应用程序容器启动并正常运行,然后执行一系列http请求(测试) 所以我的想法是——在完整的CI构建过程中,使用jacoco代理在dock

所以这里是要点

我使用
docker compose
。我的应用程序只是REST服务的集合(SpringBoot和嵌入式tomcat),所以基本上我坚持测试端点。每当我想用测试构建项目(在一个单独的模块中),我都会使用gradle和GradleDocker compose插件。在编译后的完整构建过程中,docker compose gradle插件启动所有服务,等待应用程序容器启动并正常运行,然后执行一系列http请求(测试)

所以我的想法是——在完整的CI构建过程中,使用jacoco代理在docker容器中启动应用程序,这将在执行所有http测试时生成覆盖率数据。但是文件输出总是保持为空

我将以下内容添加到
JAVA\u OPTS
应用程序容器中
-javaagent:\jacoco\jacoagent.jar=destfile=\tmp\jacoco.exec,includes=my.company.*,append=true,dumponexit=false

并且创建了
\tmp\jacoco.exec
,但其保留为0字节。
我使用的Jacoco版本是
0.7.9
。我是做错了什么,还是我不明白jacoco代理是怎么回事?

dumponexit=false
加上
destfile=…
意味着文件不会在VM shutdown()上写入,而只会在API请求()上写入,我想这不是您的意图。因此,将
dumponexit
设置为
true
,或者根本不指定它,因为
true
是默认值。

啊,是的,我在github上查看了jacoco源代码。我认为最好的选择是在使用
tcpserver
模式运行代理时提取exec数据。@Godin是否可以将覆盖率数据动态写入
jacoco.exec
?例如:如果我启动一个spring启动应用程序并调用其端点,我需要在调用每个端点时编写覆盖率报告。基本上,我不想为了获得覆盖率报告而终止目标jar