sonarqube覆盖率是0的几种原因
jacoco没有正常生成报告
sonarqube显示的单元测试覆盖率,依赖于junit,如果要在maven test的过程中生成覆盖率需要使用jacoco。
sonarqube的覆盖率是读取的jacoco生成的信息,所以第一步是检查jacoco是否有正常的生产测试报告
检查target\site\jacoco目录下面是否有报告生成,然后查找jacoco没有生成报告的原因,比如有没有通过的测试,tes过程被 skip,没有导入surefire插件所有没有触发覆盖率的记录等等。
PrepareForTest模拟了被测试类
使用testMe生成的单元测试代码,选用Powermock模版默认会加上@PrepareForTest({被测试类.class}),这样会导致没有sonarqube没有覆盖率
@RunWith(PowerMockRunner.class)
@PrepareForTest({GroupServiceImpl.class})
@PowerMockIgnore({"javax.management.*", "javax.script.*"})
public class GroupServiceImplTest {
}
在maven插件里面指定排斥路径的时候不小心指定了一个父路径
比如要测试的包是 com.lomi.goods.service.impl.xxxxServerImpl
<sonar.coverage.exclusions>
**/goods/**,
**/annotation/**
</sonar.coverage.exclusions>
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2024-09-03 11:12 zhangyukun 阅读(523) 评论(0) 编辑 收藏 举报