源和测试类在不同模块中时的 JaCoCo 配置

Posted

技术标签:

【中文标题】源和测试类在不同模块中时的 JaCoCo 配置【英文标题】:JaCoCo configuration when sources and tests classes are in different modules 【发布时间】:2015-01-12 01:24:25 【问题描述】:

我有一个使用 Gradle(2.2) + JaCoCo + Sonar 的多模块项目。我正在使用sonar-runner 插件,当我执行测试时,我可以在每个模块中看到build/jacoco/jacoco.exec 下的测试报告。到目前为止,一切都很好。

问题是,我在模块 A 中有一些测试正在测试来自其他模块 B 的类,因此 JaCoCo 正在以 0% 的代码覆盖率识别来自模块 B 的类。我知道这不是一个好的做法,但必须这样做。

结构示例:

moduleA
    src
        java
            Foo
        test
moduleB
    src
        java
        test
            TestFoo

然后 JaCoCo 将显示覆盖率为 0% 的类 Foo。我尝试合并所有模块的结果,但我得到了相同的结果,但在一个文件中,所以这不是我想要的。执行 JaCoCo 报告时是否有任何选项可以包含来自其他模块的源?

谢谢。

【问题讨论】:

【参考方案1】:

每个模块都需要自己的测试。 Jacoco 在模块之后构建每个 jacoco.exec 模块,并且不能返回到前一个模块。所以你必须在moduleA中设置一个TestFoo。

【讨论】:

以上是关于源和测试类在不同模块中时的 JaCoCo 配置的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube + Jacoco - 无法读取 Koin 模块测试覆盖率

合并 Jacoco 结果,混淆和非混淆运行

使用JaCoCo统计单元测试代码覆盖率

结合声纳的 Jacoco 测试覆盖率

如何在 Maven 测试阶段生成 jacoco 报告

使用Jacoco统计功能测试覆盖率(Ant方式)