gpt4 book ai didi

java - Jacoco:查找外部测试的代码覆盖率

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:50 24 4
gpt4 key购买 nike

我最近在 eclipse 中使用 EclEmma 插件来查找我的应用程序中 JUnit 的代码覆盖率,并且效果很好。

在下一步中,我希望能够找到从外部对我们的应用程序调用的端到端测试/功能测试的代码覆盖率(它们驻留在单独的服务器上)。

基本上,我们将应用程序打包为 jar(我们使用 maven)并将其部署到服务器上。我们可以在这个位置触发功能测试。

在这种情况下有没有办法找到代码覆盖率?

我对代码覆盖工具工作原理的理解(原始语言)是它加载类并根据已命中的代码部分生成报告。因此,根据这种理解,我不需要访问测试代码。我只需要以某种方式将代码覆盖率工具插入到我的应用程序 jar 中,只要调用此 jar 中的任何代码,报告就会更新。 我的理解正确吗?

注意:如果可以使用其他工具,我愿意使用其他代码覆盖工具。

最佳答案

您可以在服务器上运行您的代码,通过将代理添加到 Java 命令行,在运行时由 JaCoCo 代理检测。例如,如果您的进程当前启动时:

java -jar myApp.jar

可以改成

java -jar myApp.jar -javaagent:/some/path/jacocoagent.jar

默认情况下,这会将覆盖率数据写入文件 jacoco.exec当 VM 终止时,但您可以使用选项覆盖它,使您能够通过 TCP/IP 获取覆盖率数据。查看JaCoCo Agent docs .

您可以使用以下方法将其格式化为报告(例如 HTML):

java -jar jacococli.jar report jacoco.exec [options]

参见 JaCoCo CLI docs选项。

...或者您可以使用 EclEmma 来分析输出。

如果有真正的原因您不能使用该代理,作为最后的手段,您可以使用 instrument 将您的类文件静态转换为检测类文件。命令 jacocococli .查看JaCoCo 'Offline Instrumentation' documentation有关这方面的信息。

直接调用代理并使用jacococli.jar是使用 JaCoCo 的最基本方法。由于您使用的是 Maven,因此您可以使用 JaCoCo Maven 插件获得许多相同的效果。

关于java - Jacoco:查找外部测试的代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50133368/

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