Maven 带有jacoco的声纳仅显示testng的覆盖范围,不显示powermock的覆盖范围
我们有一个多模块maven项目 每个模块都有两个testng和powermock单元测试用例。我们使用jacoco生成代码覆盖率报告。但是,jacoco正在基于testng单元测试用例分析单元测试覆盖率,而忽略了powermock单元测试用例。因此,代码的总覆盖率越来越低Maven 带有jacoco的声纳仅显示testng的覆盖范围,不显示powermock的覆盖范围,maven,testng,powermock,jacoco,Maven,Testng,Powermock,Jacoco,我们有一个多模块maven项目 每个模块都有两个testng和powermock单元测试用例。我们使用jacoco生成代码覆盖率报告。但是,jacoco正在基于testng单元测试用例分析单元测试覆盖率,而忽略了powermock单元测试用例。因此,代码的总覆盖率越来越低 如何配置jacoco以同时获取testng和jacoco测试用例?PowerMock不能很好地与jacoco一起工作。正如bkail所述,jacoco和PowerMock仪器不能很好地混合 我基于Cobertura编写了另一个
如何配置jacoco以同时获取testng和jacoco测试用例?PowerMock不能很好地与jacoco一起工作。正如bkail所述,jacoco和PowerMock仪器不能很好地混合 我基于Cobertura编写了另一个maven插件,它允许您正确计算powermock测试覆盖的类的覆盖率。您可以在此处查看(如有任何反馈,将不胜感激): 我目前正在一组使用powermock(总共500k个NCLOC,110多个使用powermock的测试类)的项目上尝试它,以检测bug/奇怪的行为,但是任何其他反馈都将不胜感激 此maven插件生成的UT和IT覆盖率报告可以使用通用测试覆盖率插件直接导入SonarQube(参见项目文档),当SonarQube接受以下拉动请求时,总体覆盖率也将可用: 作为旁注,导致编写cobertura maven插件替代品的原因将在项目页面上解释 希望有帮助
干杯我已经使用
PowerMock模块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>
...
在这里,您可以看到sonar考虑了PowerMock模拟的静态方法和new
语句:
如果要模拟new
语句,请确保使用PowerMockRule
而不是PowerMockRunner
看看