我们有一个多模块maven项目。
每个模块都有几个testng和powermock单元测试用例。我们正在使用jacoco进行代码覆盖率报告。但是,jacoco正在分析基于testng单元测试用例的单元测试覆盖率,并忽略了powermock单元测试用例。因此,总代码覆盖率很低。
如何配置jacoco以获取testng和jacoco测试用例?
答案 0 :(得分:0)
PowerMock known无法与JaCoCo合作。
答案 1 :(得分:0)
如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替代品的原因。
希望它有所帮助!
干杯
答案 2 :(得分:0)
我已经成功使用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
语句考虑在内:
如果要模拟new
语句,请确保使用PowerMockRule
而不是PowerMockRunner
。