使用Powermock和gradle进行代码覆盖

时间:2017-07-14 11:01:12

标签: android-studio intellij-idea code-coverage powermock jacoco

我在测试中使用过powermock。作为powermock工具,我没有得到适当的jacoco覆盖。

  1. 我可以看到,当我在IDE中运行测试时,Android Studio中的IntelliJ IDEA覆盖运行器为我提供了适当的覆盖。 IDEA代码覆盖如何工作?
  2. 我已阅读,离线jacoco仪器可用于获取覆盖范围。如何在gradle中做到这一点?这个的任何gradle插件?

2 个答案:

答案 0 :(得分:1)

PowerMock documentation中提到了“Jacoco offline”;并且有一个指向 maven example的链接:

最糟糕的情况是,您必须研究该解决方案的工作原理,然后将其用于Gradle。

答案 1 :(得分:0)

我无法帮助您解决问题,但是我设法使用powermock-module-javaagent使用maven与Jacoco生成了PowerMock报道。也许您可以将此pom转换为gradle文件。

只需确保将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语句考虑在内:

enter image description here

如果要模拟new语句,请确保使用PowerMockRule而不是PowerMockRunner

看看this test