gpt4 book ai didi

java - 从 jar 执行中获取 Java 覆盖率

转载 作者:行者123 更新时间:2023-12-01 10:44:11 24 4
gpt4 key购买 nike

我有一个没有单元测试的JAVA应用程序(我知道,继承的代码),我需要从几个测试中获取覆盖率,这些测试被定义​​为使用一些预设执行jar文件。

我曾经通过控制台使用 Emma 来完成此操作,如下所示:

java -cp emma.jar emmarun -raw -ix +some.filter.* -out ./coverage/test001.em -jar MyJarFile.jar <application arguments>

问题在于使用 -ix 参数进行过滤。我只想从我自己的软件包中获取覆盖范围,这些软件包名为 com.mycompany.whatever.blah.blah.blah。因此,通过包含过滤器应该只是 +com.mycompanyname.*。尽管如此,我只得到了大约一半的包,甚至没有将每个类放入每个包中。

我还尝试了其他组合,例如仅使用排除模式来避免所有不需要的包,结果是相同的。我知道我过去设法以某种方式做到这一点,但恐怕我不记得是如何做到的。

这就是为什么我正在寻找一个不同的覆盖库,它允许我从 jar 文件中获取覆盖率。我看到了 JMockit、Jacoco 甚至令人印象深刻的 Sonar,但它们似乎不允许 jar 覆盖,并且它们是为单元测试覆盖而设计的。

有什么建议吗?

最佳答案

JaCoCo 包含一个名为 jacocoagent.jar 的代理来完成这项工作。我无法在网上找到示例,但我尝试按照文档进行操作,这有效:

java -javaagent:./route/to/jacocoagent.jar=destfile=./coverage/test001.exec,includes=com.mycompany.* -jar MyJarFile.jar <Jar arguments>

然后我可以使用 eclemma 插件将 exec 文件加载到 Eclipse 中,合并它们,然后导出为 HTML 文件。我认为可以从 ant/maven 甚至使用为此目的编写的 Java 应用程序生成 HTML 报告(jacoco 开发人员提供了一个示例),但我还没有测试这些选项。

关于java - 从 jar 执行中获取 Java 覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283670/

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