【问题标题】:Jacoco is not showing coverage for PowerMockito classesJacoco 没有显示 PowerMockito 类的覆盖范围
【发布时间】:2017-10-16 12:41:50
【问题描述】:

我们使用Jacocoeclemma 进行测试用例覆盖。对于使用 PowerMockRunner 的类,我们在两者中都得到了正确的覆盖。对于使用 PowerMockRunner 的类,我们面临覆盖问题,例如它在 jacoco 中显示 0 % 的覆盖率,但在 eclemma 中显示正确的覆盖率。

PowerMockito version :1.7.1
Jdk 1.8
Jacoco:0.7.9

我也尝试使用 PowerMockRunner 规则,但这会导致另一个与验证 stackframe 相关的错误,这很难修复。 Eclemma 用作 eclipse 插件, jacoco 用作 maven 插件。 任何遇到此问题并能够解决此问题的人都可以对此有所了解。我浏览了许多链接,但没有一个适合我。

一些有用的参考:

PowerMock ECLEmma coverage issue

【问题讨论】:

    标签: java junit powermockito jacoco-maven-plugin eclemma


    【解决方案1】:

    PowerMock 不适用于 Jacoco

    Jira for the bug

    Jacoco 和 powermock 不能很好地工作,所以为了获得覆盖,我们可以使用 jacoco 的离线版本。

    我整理了一个例子

    https://github.com/muhdkhokhar/powermock-jacoco-coverage

    【讨论】:

    • 对于一些 powemockito 类,它在 jacoco 中显示 % 。那我们怎么能概括“它不起作用”?。别介意。
    【解决方案2】:

    jacoco 和 powermock 的离线仪器运行良好,而动态仪器无法正常工作,powermock 团队正在努力解决此问题。请参阅下面提到的 URL。

    https://github.com/powermock/powermock/issues/727

    https://github.com/powermock/powermock/wiki/Code-coverage-with-JaCoCo

    【讨论】:

      【解决方案3】:

      PowerMock 可以与 JaCoCo 一起使用

      我的配置是:

      <powermock-version>2.0.9</powermock-version>
      <jacoco.version>0.8.1</jacoco.version>
          
      <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${jacoco.version}</version>
          <configuration>
              <excludes>
                  <exclude>...</exclude>
              </excludes>
          </configuration>
          <executions>
              <execution>
                  <id>prepare-agent</id>
                  <goals>
                      <goal>prepare-agent</goal>
                  </goals>
              </execution>
              <execution>
                  <id>report</id>
                  <phase>prepare-package</phase>
                  <goals>
                      <goal>report</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
      

      注意:【重要!!!】 你不能使用包含。如果使用包含,则覆盖率始终为零。但你可以使用排除。

      【讨论】:

        猜你喜欢
        • 2014-02-19
        • 2018-01-06
        • 2019-12-27
        • 2023-03-27
        • 2015-10-30
        • 2016-10-02
        • 2017-03-06
        • 1970-01-01
        相关资源
        最近更新 更多