gpt4 book ai didi

java - JBoss 服务器上的 Cobertura 运行时覆盖范围

转载 作者:行者123 更新时间:2023-11-30 07:57:09 26 4
gpt4 key购买 nike

我正在探索如何在运行时对 Java Web 应用程序执行 Cobertura 代码覆盖率,并发现了一篇文章 http://www.mojohaus.org/cobertura-maven-plugin/instrumentingDeploymentArtifact.html

我按照这些步骤操作,能够获得小型 Maven Web 应用程序的覆盖率报告,在该应用程序中,我在 JBoss 服务器上部署了一个 war 文件(包含单个模块),并手动浏览了已部署的应用程序。

现在,当我对更大的应用程序执行相同的过程和步骤时,我们需要在相同的设置上部署一个ear文件(包含多个模块的war文件),我手动点击应用程序服务,但我无法获取任何覆盖范围。最初会创建一个空的 cobertura.ser 文件,但不会更新。

如果 Ear/war 存在问题或需要在 JBoss 服务器中配置的任何其他内容,请告诉我。

提前致谢

最佳答案

Cobertura 的一个已知条件是它在 JVM 关闭期间写入代码覆盖率,即它注册一个关闭钩子(Hook),并在那时将信息转储到文件中。问题是 JBoss 通常会在大多数关闭 Hook 执行之前停止 JVM,这会影响 Cobertura。请参阅此常见问题解答:I'm using JBoss. When I stop the server, the coverage data file is not written.

常见问题解答建议使用

  -Djboss.shutdown.forceHalt=false

现在,另一个常见的解决方案是将 CoberturaFlush.war(发行版的一部分)合并到您的 EAR 中,并调用一个特殊的 url,使 Cobertura 运行时将其数据转储到文件中。您需要在关闭服务器/应用程序之前调用该 url,通常是 http://HOST:PORT /coberturaFlush/flushCobertura

最后一件事:默认情况下,数据文件将在工作目录中生成,因此显式强制文件路径名通常更安全:

 -Dnet.sourceforge.cobertura.datafile=[absolute file path]

在您的情况下,必须将其添加到 JBoss 启动参数中(例如 run.conf)

关于java - JBoss 服务器上的 Cobertura 运行时覆盖范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32508337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com