integration-testing - Jacoco-IntegrationTests 代码覆盖率

标签 integration-testing code-coverage emma jacoco

我无法克服这个问题-
我有 3 个 A B 和 C 类。

A 是一个集成测试类,它同时测试 B 类和 C 类。

B 和 C 是另一个包中的类(w.r.t 类 A)

现在,当我运行集成测试类 A 时,我希望代码覆盖率显示 B 和 C 的哪些部分被覆盖。我没有得到所需的输出。

我得到的输出是没有检测类。

所以这两个类没有测试覆盖率......如果我在 src/main/java 中与 A 所在的相同模块中编写示例代码......它会识别该类并对其进行检测。

为什么它不能对其包之外的类做同样的事情。

请帮助。谢谢

最佳答案

这可能是由许多问题引起的:

1.根据jacoco代理未触发类

您需要检查您的 B 类和 C 类是否已被 jacoco 代理触发。这可以通过生成 jacoco 报告并单击 session 链接(右上角)来完成。

如果此处未列出您的 B 类或 C 类,则表示您的 jacoco 代理存在问题,并且它没有连接到触发 B/C 类的正确 JVM,或者没有触发 B/C 类中的代码.

2. 根据 jacoco 代理触发的类,但没有可用的源/类文件

如果这里列出了你的 B 类或 C 类,但无法点击,则表示你的 B/C 类被 jacoco 代理触发并检测到,但无法链接。

请记住,在生成报告期间,jacoco 需要有可用的类文件和源文件才能生成报告。 (如果您使用的是 maven,它需要 project.build.outputDirectory 中的类文件和 project.build.sourceDirectory 中的源代码

3.根据jacoco代理触发的类,但可用的类文件错误

如果您的 B 类或 C 类部署在应用服务器上,则应用服务器可能还会在部署期间检测这些类的字节码,从而造成本地项目中的类文件与由应用程序检测到的类文件不同的情况jacoco 代理(有关此问题的讨论,请参见此主题:https://groups.google.com/forum/?fromgroups=#!topic/jacoco/GjSlBoFTRrc)。在这种情况下,Jacoco 提供了一个 classdumpdir 参数,可以将其设置为一个文件夹,jacoco 将在其中转储它在测试运行期间检测到的类。您需要在报告生成期间使用这些类。

引用

  • http://www.eclemma.org/jacoco/trunk/doc/agent.html
  • https://groups.google.com/forum/?fromgroups=#!topic/jacoco/GjSlBoFTRrc
  • 关于integration-testing - Jacoco-IntegrationTests 代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374725/

    相关文章:

    ruby - 如何测试 Sidekiq 作业失败?

    c# - 单元测试心跳功能

    java - 我如何使用 JUnit 在 DAO 层中激发 SQLExcetpion

    rust - 为什么 kcov 计算 Rust 程序的代码覆盖统计数据不正确?

    c# - 如何确定项目/解决方案中哪些代码最常被使用?

    intellij-idea - Intellij 的 'all classes in scope' 没有覆盖

    java - EMMA 未能转储覆盖率数据 : java. io.FileNotFoundException : coverage. ec(权限被拒绝)

    java - Ant 构建 - Emma 代码检测 - JUnit 测试需要接口(interface),Emma 不检测它们

    c# - 使用 ClientWebSocket .net 核心测试 TestHost.WebSocketClient