我们尝试使用 JaCoCo (0.8.12) 收集针对 Java11 编译并在 Tomcat (9.0.88) 下运行的 Grails (5.3.3) Web 应用程序中的代码覆盖率信息。
按照JaCoCo的说明,我尝试将Java代理添加到setenv.sh和catalina.sh文件中的JAVA_OPTS和CATALINA_OPTS中。我获得的最多信息是一些 apache 类。我们的网络应用程序根本没有课程。
为了启用 JaCoCo 实时检测,我们使用以下命令之一:
export JAVA_OPTS="$JAVA_OPTS -javaagent:/root/jacocoagent.jar=destfile=/root/jacoco.exec,append=true"
或
export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/root/jacocoagent.jar=destfile=/root/jacoco.exec,append=true"
它们都不会生成有关我们网络应用程序的覆盖信息。
我们应该做什么?
Tomcat 似乎在 JaCoCo 代理有机会下载结果之前就杀死了 JVM。 为了避免这种情况并获取整个报告,可以使用命令行界面:
java -jar <jacococli> dump --port <port> --destfile <dump-file>
附加可选参数
--reset
将在转储报告后清空内部数据。