无法使用javaagent生成jacoco.exec文件

问题描述 投票:0回答:1

我正在使用java代理生成集成测试的代码覆盖率,该测试与被测应用程序分开,并且这些测试使用该应用程序公开的外部接口。我已经执行 java -javaagent:=destfile= 。这里的想法是使用参数 A_RUNJAVA_EXTRA_VM_ARGS="javagent:jacocoagent.jar=destfile=jacoco.exec" 其中 javaagent 指定 jacocoagent.jar 的位置,destfile 代表放置 jacoco.exec 的位置。我正在使用 Jenkins 上的脚本重新启动虚拟机,并通过 jenkins 运行 junit。即使生成了 Junit 测试摘要后,我也没有看到生成的 jacoco.exec 文件。

需要一些关于出了什么问题的建议。

我已经尝试了几乎所有的方法。我认为可能的原因之一是当我使用 ps aux | 时,java 进程未正确加载 jacoco 代理。 grep java 虚拟机重启后我没有得到任何输出

runtime code-coverage pom.xml jacoco java-17
1个回答
0
投票

我知道 4 个月后可能会很晚,但这里有一些我的评论:无论您在操作系统中指定什么环境变量,这并不意味着 java 进程启动时就能“看到”它们。

您需要实际跟踪真正启动您需要 JACOCO 的 java 进程的位置,并将 -javaagent 添加到该进程的 VM 参数中。

它可能是一个批处理文件,或者是一个以某种方式触发虚拟机的 EXE,但它是用 INI 文件配置的,或者虚拟机进程可以从另一段源代码中启动,即您可能需要深入了解谁实际启动将虚拟机放入 Jenkins 作业中。

如果此过程允许您以某种方式覆盖或影响命令行或环境变量中的 vm 参数,那么您将获得更优雅的解决方案。 非常丑陋的解决方案就是“SED”,即将原始的 VM 调用替换为 BAT、CMD、SH,修改它以包含您的 -javaagent。

© www.soinside.com 2019 - 2024. All rights reserved.