在运行分析时,intellij中的SonarQube没有获取单元测试分支覆盖率

时间:2014-10-30 16:50:27

标签: unit-testing intellij-idea sonarqube

我在intellij中安装了SonarQube插件,并将我的项目与我们的声纳服务器相关联。服务器告诉我每个类的分支覆盖范围,并在我提交单元测试时更新。但是,当我运行本地分析(右键单击项目 - >分析 - >按名称运行检查 - > SonarQube)时,SonarQube会告诉我所有类的X more branches need to be covered by unit tests to reach the minimum threshold of 65.0% branch coverage,它甚至不会在本地更改当我添加更多单元测试时(但它确实在服务器上发生了变化)

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:4)

这是一个已知的当前限制(实际上适用于IntelliJ和Eclipse插件):本地分析不能自动执行单元测试,因此无法获得覆盖结果并为您提供正确的信息。

原因是本地分析只是“标准”分析,不会将数据推送到服务器。根据定义,SonarQube分析不会执行任何外部工具,只需在需要时重复使用以前生成的报告。

如果是基于Maven的项目,您有一个解决方案:在启动本地分析之前运行mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true。这应该在默认位置生成覆盖率报告,因此应该有效。