【发布时间】:2015-10-06 16:40:57
【问题描述】:
我发现我的 Sonar 实例 5.1 或 5.1.1(带有最新的 sonar-runner 2.x)停止在项目的仪表板上显示部分单元测试信息(单元测试小部件)。
我拥有的属性是(在 Gradle 的 sonarRunner > sonarProperties 部分):
property "sonar.junit.reportsPath", "build/test-results/UT"
property "sonar.surefire.reportsPath", "build/test-results/UT"
要修复它,我还必须包含以下属性:
property "sonar.java.junit.reportsPath", "build/test-results/UT"
property "sonar.java.surefire.reportsPath", "build/test-results/UT"
仅供参考:我所有的单元测试报告都放在 build/test-results/UT 文件夹下,所有集成测试结果文件都放在 unedr build/test- results/IT 文件夹等
我想知道这是由于我使用的 Gradle 版本 (2.3) 还是由于 SonarQube (4.5+) 的更高版本,因为我同时拥有 SQ 5.1 和 5.1.1 实例。 我知道 SonarQube 团队从 SonarQube 4.12 版开始支持多语言
从 SonarQube 4.2 开始,可以对多语言项目进行分析。
现在,它提出了一个问题。对于基于 Groovy 的项目获取相同的单元测试信息,我需要使用:
property "sonar.groovy.junit.reportsPath", "build/test-results/UT"
property "sonar.groovy.surefire.reportsPath", "build/test-results/UT"
如果我的项目使用 Groovy 代码而不是 java,类似的情况?
使用双引号搜索 "**sonar.java.junit.reportPath"** 在 Google 中显示 No results found,这迫使我尝试查看 google如果我可以在不使用 " 双引号(对于此属性)的情况下再次运行搜索,则结果。
在 SonarQube 网站“搜索框”显示中执行相同操作:
没有找到与 sonar.java.junit.reportPath 相关的结果。请尝试以下建议之一:
虽然在 Gradle 中,但在里面
sonarRunner task {
.. inside ..
sonarProperties {
... section ... where I define various sonar props..
}
...
}
我可以同时定义 sonar.junit.reportPath、sonar.java.junit.reportPath 以及类似的 sonar.surefire.reporPath 和 sonar.java.surefire.reportPath,并且在 Gradle 中运行 sonarRunner 任务时,它不会出错.因此它让我相信属性变量是有效的。
对于基于 Java 和 Groovy 的混合项目运行 sonarRunner 或独立 sonar-runner 命令也存在问题(即 Java 中的源代码但 Groovy 中的测试)。设置 sonar.language=java,grvy 没有帮助。我在 stackoverflow 上发布了这个问题,但到目前为止,我还没有完美的结果/答案来说明如何为 Groovy 项目启动并运行一个完整的声纳仪表板,就像我为 Java 项目获得的一样。
Groovy project - Sonar - Publish project and Unit + Integration Test code coverage data
PS:我尝试了各种值来设置声纳。. 变量(就声纳源、测试等属性而言,他们已经提到过)在他们网站的文档部分)
【问题讨论】:
标签: junit gradle sonarqube sonar-runner gradle-2