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编辑  收藏  举报

导航