所以这是要点......
我使用docker-compose
。我的应用程序只是 REST 服务的集合(带有嵌入式 tomcat 的 spring boot),所以基本上我坚持测试端点。每当我希望使用测试构建项目(位于一个完整的单独模块中)时,我都会使用 gradle 和 gradle docker-compose 插件。发生的情况是,在编译后的完整构建过程中,docker-compose gradle 插件会启动所有服务,等待应用程序容器启动并正常运行,然后执行一堆 http 请求(测试)。
所以我的想法是 - 在完整的 CI 构建期间,使用 jacoco 代理在 docker 容器中启动应用程序,这将在执行所有 http 测试时生成覆盖率数据。但文件输出始终为空。
我将以下内容添加到 JAVA_OPTS
到应用程序容器
-javaagent:\jacoco\jacocoagent.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 关闭 ( http://www.jacoco.org/jacoco/trunk/doc/agent.html ) 时写入,而仅在 API 请求 ( http://www.jacoco.org/jacoco/trunk/doc/api/org/jacoco/agent/rt/IAgent.html#dump(boolean) ) 时写入,我想这不是你的意图。因此,将 dumponexit
设置为 true
,或者根本不指定它,因为 true
是默认值。
关于java - Jacoco 代理 - 无输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44619334/