当使用Spock测试Java代码时,如何显示测试覆盖率?

时间:2017-08-04 08:46:33

标签: java unit-testing groovy sonarqube sonarqube-scan

我们有一个Java项目,其中使用Spock(Groovy)编写单元测试。我们使用SonarQube进行静态分析。但是,我们没有看到SonarQube报告的测试覆盖率。但它列出了单元测试部分下的Groovy测试。

在SonarQube服务器(6.x)中,我们安装了Groovy插件(1.5),并在单元测试下列出了Groovy测试。以下是在顶层模块级别设置的SonarQube属性。我们使用Gradle(3.4)和SonarQube插件(2.5)进行构建。

sonarqube {
    properties {
        property "sonar.projectKey", "ABC"
        property "sonar.projectName", "Abc Project"
        property "sonar.sourceEncoding", "UTF-8"
        property "sonar.sources", "src/main/java"
        property "sonar.tests", "src/test/groovy"
    }
}

当我通过Gradle运行JaCoCo来生成HTML报告时,它会正确显示覆盖率。但是,当我们尝试发布到SonarQube时,会显示以下日志。似乎SonarQube无法找到Java源来确定覆盖范围。

Sensor GroovySurefireSensor [groovy] (done) | time=25ms
Sensor Groovy CoberturaSensor [groovy]
No Cobertura report provided (see 'sonar.groovy.cobertura.reportPath' property)
Sensor Groovy CoberturaSensor [groovy] (done) | time=0ms
Sensor Groovy JaCoCo [groovy]
    Checking binary directory: /var/lib/jenkins/workspace/Abc-Analysis/common/build/classes/main
Analysing /var/lib/jenkins/workspace/abc-Analysis/common/build/jacoco/test.exec
Analysing /var/lib/jenkins/workspace/abc-Analysis/common/build/jacoco/test.exec
File not found: com/abc/common/core/Permission.java
... 

0 个答案:

没有答案