【问题标题】:sonar with jacoco showing coverage only for testng and not for powermock带有 jacoco 的声纳仅显示 testng 而不是 powermock 的覆盖范围
【发布时间】:2015-10-30 01:06:37
【问题描述】:

我们有一个多模块的 maven 项目。

每个模块都有几个 testng 和 powermock 单元测试用例。我们正在使用 jacoco 进行代码覆盖率报告。但是,jacoco 是基于 testng 单元测试用例分析单元测试覆盖率,而忽略了 powermock 单元测试用例。因此,总代码覆盖率正在下降。

如何配置 jacoco 以同时获取 testng 和 jacoco 测试用例?

【问题讨论】:

  • 你是如何解决这个问题的?我也有同样的问题,它显示的是单元测试,但不是集成测试用例 - 仅限 Kotlin 文件

标签: maven testng powermock jacoco


【解决方案1】:

PowerMock 是 known 不能与 JaCoCo 很好地配合。

【讨论】:

    【解决方案2】:

    正如 bkail 所说,jacoco 和 powermock 仪器不能很好地混合。

    我编写了一个基于 Cobertura 的替代 maven 插件,它允许您正确计算 powermock 测试所涵盖的类的覆盖率。您可以在这里查看它(任何反馈将不胜感激):

    https://github.com/QualInsight/qualinsight-mojo-cobertura

    我目前正在使用 powermock(总共 500k NCLOC,使用 powermock 的 110 多个测试类)的一组项目中尝试它来检测错误/奇怪行为,但我们将不胜感激任何其他反馈。

    此 maven 插件生成的 UT 和 IT 覆盖率报告可以使用通用测试覆盖率插件直接导入 SonarQube(请参阅项目文档),当 SonarQube 接受以下拉取请求时,整体覆盖率也将可用:

    https://github.com/SonarSource/sonar-generic-coverage/pull/5

    作为旁注,导致编写 cobertura-maven-plugin 替代方案的原因在项目页面上进行了解释。

    希望对你有帮助!

    干杯

    【讨论】:

      【解决方案3】:

      我已经设法使用 powermock-module-javaagent 使用 Jacoco 生成 PowerMock 覆盖范围。

      只要确保将 powermock 代理放在 jacoco 代理之后:

      <artifactId>maven-surefire-plugin</artifactId>
                  <configuration>
                      <useSystemClassLoader>true</useSystemClassLoader>
                      <argLine>${jacocoArgLine} -javaagent:${settings.localRepository}/org/powermock/powermock-module-javaagent/${powermock.version}/powermock-module-javaagent-${powermock.version}.jar -noverify</argLine>
      ...
      

      如果你想看一个例子,看看这个项目:https://github.com/jfcorugedo/sonar-scanner

      在这里您可以看到声纳考虑了静态方法和被 PowerMock 模拟的 new 语句:

      如果您想模拟 newstatements,请确保使用 PowerMockRule 而不是 PowerMockRunner

      看看this test

      【讨论】:

        猜你喜欢
        • 2014-02-19
        • 2020-04-25
        • 1970-01-01
        • 2014-04-09
        • 2019-04-23
        • 2015-05-15
        • 2016-02-25
        • 2016-11-10
        • 2016-11-15
        相关资源
        最近更新 更多