我最近在 eclipse 中使用 EclEmma 插件来查找应用程序中 JUnit 的代码覆盖率,效果非常好。
在下一步中,我希望能够找到从外部调用我们的应用程序的端到端测试/功能测试的代码覆盖率(它们驻留在单独的服务器上)。
基本上,我们将应用程序打包为 jar(我们使用 maven)并将其部署在服务器上。我们可以在这个位置触发功能测试。
在这种情况下有没有办法找到代码覆盖率?
My 理解代码覆盖率工具的工作原理(以原始语言)是它加载类并根据已命中的代码部分生成报告。因此,根据这种理解,我不需要访问测试代码。我只需要以某种方式plug将代码覆盖率工具添加到我的应用程序 jar 中,每当调用此 jar 中的任何代码时,报告都会更新。我的理解正确吗?
笔记:
如果其他工具可以的话,我愿意使用其他代码覆盖工具。
您可以通过将代理添加到 Java 命令行,在服务器上运行代码,并由 JaCoCo 代理在运行时进行检测。例如,如果您的流程当前启动时使用:
java -jar myApp.jar
你可以将其更改为
java -jar myApp.jar -javaagent:/some/path/jacocoagent.jar
默认情况下,这会将覆盖率数据写入文件jacoco.exec
当 VM 终止时,但您可以使用选项覆盖此设置,使您能够通过 TCP/IP 获取覆盖数据。请参阅JaCoCo 代理文档 https://www.jacoco.org/jacoco/trunk/doc/agent.html.
您可以使用以下方法将其格式化为报告(例如 HTML):
java -jar jacococli.jar report jacoco.exec [options]
See the JaCoCo CLI 文档 https://www.jacoco.org/jacoco/trunk/doc/cli.html的选项。
...或者您可以使用 EclEmma 来分析输出。
如果有真正的原因您无法使用代理,作为最后的手段,您可以使用以下方法将类文件静态转换为已检测的类文件:instrument
命令输入jacocococli
。请参阅JaCoCo“离线仪表”文档 https://www.jacoco.org/jacoco/trunk/doc/offline.html有关这方面的信息。
直接调用代理并使用jacococli.jar
是使用 JaCoCo 的最基本方法。由于您使用的是 Maven,因此您可以使用 JaCoCo Maven 插件获得许多相同的效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)