小编典典

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

jenkins

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

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

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

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

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

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


阅读 247

收藏
2020-07-25

共1个答案

小编典典

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

java -jar myApp.jar

您可以将其更改为

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

默认情况下,这将jacoco.exec在VM终止时将Coverage数据写入文件,但是您可以使用选项覆盖它,使您能够通过TCP /
IP获取Coverage数据。请参阅JaCoCo代理文档

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

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

有关选项,请参见JaCoCo CLI文档

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

如果有确实的原因,您不能使用该代理,则万不得已,可以使用中的instrument命令将您的类文件静态转换为已检测的类文件jacocococli。有关此信息,请参见JaCoCo“离线仪表”文档

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

2020-07-25