我们有一个多模块的maven项目。
每个模块都有几个testng和powermock单元测试用例。我们在代码覆盖率报告中使用了jacoco。但是,jacoco正在分析基于testng单元测试用例的单元测试覆盖率,而忽略了powermock单元测试用例。因此,总代码覆盖率越来越低。
如何将jacoco配置为同时获取testng和jacoco测试用例?
发布于 2015-08-11 00:22:41
PowerMock是known,不能很好地与JaCoCo一起工作。
发布于 2015-09-28 20:06:07
正如bkail所说,jacoco和powermock工具不能很好地混合。
我编写了一个基于Cobertura的替代maven插件,它允许您正确计算powermock测试覆盖的类的覆盖率。你可以在这里看一下(任何反馈都会非常感谢):
https://github.com/QualInsight/qualinsight-mojo-cobertura
我目前正在使用powermock (总共500k NCLOC,使用powermock的110+测试类)在一组项目上尝试它来检测but /奇怪的行为,但任何其他反馈都将不胜感激。
此maven插件生成的UT和IT覆盖报告可以使用通用测试覆盖插件直接导入到SonarQube中(请参阅项目文档),当SonarQube接受以下拉取请求时,总体覆盖也将可用:
https://github.com/SonarSource/sonar-generic-coverage/pull/5
作为附注,在项目页面上解释了导致编写cobertura-maven-plugin替代品的原因。
希望它能帮上忙!
干杯
发布于 2018-08-31 06:23:21
我已经设法使用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
在这里,您可以看到sonar考虑了PowerMock模拟的静态方法和new语句:

如果您想模拟new语句,请确保使用PowerMockRule而不是PowerMockRunner。
看一看this test
https://stackoverflow.com/questions/31863292
复制相似问题