当我进行单元测试时,为什么我的 sonarqube 覆盖率为 0%?

Lar*_*sse 5 java spring-test gradle spring-boot sonarqube

所以我正在使用 SonarQube 来改进我的代码。问题是我的覆盖率一直是 0%。我认为我的 build.gradle 文件不正确,但我不确定这就是问题所在。任何人都可以帮我检查一下我的 build.gradle 是否正确,这样如果这不是问题,我就会继续寻找还有什么问题。

我的构建.gradle:

plugins {
    id 'org.springframework.boot' version '2.4.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id "org.sonarqube" version "3.2.0"
    id 'jacoco'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '15'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}


dependencies {
    compile 'org.apache.httpcomponents:httpcore:4.4.1'
    compile 'org.apache.httpcomponents:httpclient:4.5'
    implementation('io.jsonwebtoken:jjwt:0.2')
    implementation 'org.springframework.boot:spring-boot-starter-mail'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compile 'junit:junit:4.12'
    implementation 'org.modelmapper:modelmapper:2.4.1'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'mysql:mysql-connector-java'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'org.eclipse.jgit:org.eclipse.jgit:5.4.2.201908231537-r'
    /**
     * JUnit jupiter with mockito.
     */
    testCompile group: 'org.mockito', name: 'mockito-junit-jupiter', version: '2.19.0'

    testCompile group: 'org.mockito', name: 'mockito-core', version: '2.19.0'
    testCompile group: 'org.springframework.security', name: 'spring-security-test', version: '5.1.6.RELEASE'
}

sonarqube{
    properties{
        property 'sonarjava.source', '1.8'
        property 'sonar.java.coveragePlugin', 'jacoco'
        property 'sonar.jacoco.reportPaths', 'build/reports/jacoco/test/jacocoTestReport.xml'
        property 'sonar.java.test.binaries'
    }
}
test {
    useJUnitPlatform()
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Dav*_*arr 1

关键是 SonarQube 扫描仪必须知道 jacoco 数据文件所在的位置。基于属性的开发普遍存在的烦恼是,您不太可能看到一条错误消息,指出您没有设置正确的属性。这就是本案中发生的情况。

这在一定程度上取决于您正在使用的 SonarQube 版本,但您设置的属性“sonar.jacoco.reportPaths”从未打算指向 Jacoco XML 文件。正确的属性是“sonar.coverage.jacoco.xmlReportPaths”。