【问题标题】:Jacoco-IntegrationTests code coverageJacoco-IntegrationTests 代码覆盖率
【发布时间】:2012-11-02 16:58:25
【问题描述】:

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

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

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

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

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

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

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

请帮忙。谢谢

【问题讨论】:

    标签: integration-testing code-coverage emma jacoco


    【解决方案1】:

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

    1.没有根据 jacoco 代理触发的类

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

    如果您的 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 将在其中转储它在测试运行期间检测到的类。您需要在报告生成期间使用这些类。

    参考资料

    【讨论】:

    • 我在 B/C 类中的代码被触发,因为集成测试提供了一个成功的 Maven 构建。但无论如何,我的 B/C 班并没有在 Sessions 网页中列出。所以 Jacoco 代理没有连接到触发 B/C 类的正确 JVM? stackoverflow.com/questions/34343214/…
    • @ddewaele 您如何使用转储的类来生成报告?我正在考虑将它们打包在 .jar 中,然后在 Eclipse 中打开一个覆盖会话,导入 jacoco.exec,然后指向我制作的 .jar
    猜你喜欢
    • 2016-11-11
    • 2019-01-02
    • 1970-01-01
    • 2014-11-09
    • 2018-05-28
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多