当前位置: 首页 > 面试题库 >

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

祁增
2023-03-14
问题内容

我最近在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代理文档。

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

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

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

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

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

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



 类似资料:
  • 我正在将ANT构建转换为Maven。我不用声纳。 在Maven中,Jacoco似乎并没有报告单元测试本身的覆盖率,而ANT报告。我也一直在尝试为我的Maven build获得这个,但是我没有找到任何东西。 似乎我应该添加一个

  • 我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j

  • 我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。 格拉德尔 当我打开inside然后我可以看到成功的单元测试。 我在Jenkins环境中运行作为

  • 我正在尝试集成Jacoco,以便使用Maven获得Cucumber测试的代码覆盖率。以下是我的项目结构: > -src主java页面 -src主java助手 -src-测试-java-资源-功能 -src测试java步骤 以下是我的POM中的Jacoco配置。xml 我能够生成代码覆盖率报告。但是,在报告中,它涵盖了-src主包中的所有类。根据不同的google搜索和SO帖子,我试图修改POM以排

  • 问题内容: 试图使用Jacoco在Android的Robolectric测试中获得代码覆盖率,但在创建报告时,它只是拒绝承认我的Robolectric测试。 我的jacoco.gradle文件如下: 通过此设置,我可以获得“覆盖率”报告,但是尽管在“ src / test / java”中进行了Robolectric测试,但覆盖率为0%。 如果我在该文件中添加以下代码: 当Gradle尝试同步时,

  • 我正在使用arquillian和tomee远程插件进行集成测试。它工作得很好。但我的代码覆盖率不起作用。我使用Jacoco插件来覆盖代码。在我的Java类Java中遇到异常。朗,乐器。IllegalClassFormatException:检测com/demo/EmpService时出错 如何使用Jacoco在远程容器中进行代码覆盖? 注意:我已经在集成阶段将javaagent(argLine)传