我最近在eclipse中使用了EclEmma插件来查找我的应用程序中JUnits的代码覆盖范围,并且效果很好。
在下一步中,我希望能够找到端到端测试/功能测试的代码覆盖范围,这些代码在外部从我们的应用程序中调用(它们驻留在单独的服务器上)。
基本上,我们将应用程序打包为jar(我们使用maven)并将其部署在服务器上。我们可以在此位置触发功能测试。
在这种情况下,有没有办法找到代码覆盖率?
我 对 代码覆盖率工具(以原始语言)的工作方式的 理解 是,它会加载类并根据已被击中的代码部分生成报告。因此,根据这种理解,我不需要访问测试代码。我只需要以某种方式 插入 的代码覆盖工具为我的应用程序罐子,每当这个罐子的任何代码被调用时,报告将被更新。 我的理解正确吗?
注意:如果可以使用其他工具,我愿意使用其他代码覆盖率工具。
通过将代理添加到Java命令行,可以在运行时由JaCoCo代理进行检测的服务器上运行代码。例如,如果您的进程当前使用以下命令启动:
java -jar myApp.jar
您可以将其更改为
java -jar myApp.jar -javaagent:/some/path/jacocoagent.jar
默认情况下,这将jacoco.exec在VM终止时将Coverage数据写入文件,但是您可以使用选项覆盖它,使您能够通过TCP / IP获取Coverage数据。请参阅JaCoCo代理文档。
jacoco.exec
您可以使用以下方法将其格式化为报告(例如HTML):
java -jar jacococli.jar report jacoco.exec [options]
有关选项,请参见JaCoCo CLI文档。
…或者您可以使用EclEmma分析输出。
如果有确实的原因,您不能使用该代理,则万不得已,可以使用中的instrument命令将您的类文件静态转换为已检测的类文件jacocococli。有关此信息,请参见JaCoCo“离线仪表”文档。
instrument
jacocococli
直接调用代理并使用jacococli.jar是使用JaCoCo的最基本方法。由于您正在使用Maven,因此可以使用JaCoCo Maven插件获得许多相同的效果。
jacococli.jar