Kein unit-test-Erfolg gemeldet sonar

Einen gradle-build ist die Schaffung eines jacoco Bericht wird abgeholt von sonar-runner. Nach dem sonar-Ergebnisse gedrückt, um den sonar-server, unit-test-Abdeckung angezeigt aber das Gerät testen, der Erfolg ist 0, obwohl alle tests werden erfolgreich ausgeführt.

Blick auf die sonar-runner log sehe ich folgende Elemente der Berichterstattung der Quelle und Klassen zu Standorten:

15:52:36.087 INFO  - Source dirs: /poc-sonar/src/main/java
15:52:36.087 INFO  - Test dirs: /poc-sonar/src/test/java, /Volumes/Disk/Development/poc-sonar/src/test/groovy
15:52:36.088 INFO  - Binary dirs: /poc-sonar/build/classes/main

Dies ist die erste Frage: Hat von Sonar sehen Sie die kompilierte test-Klassen für die Analyse?

Weiter unten in der log:

15:52:37.435 INFO  - Sensor JaCoCoSensor...
15:52:37.445 INFO  - Analysing /poc-sonar/build/jacoco/test.exec
15:52:37.546 INFO  - No information about coverage per test.
15:52:37.548 INFO  - Sensor JaCoCoSensor done: 113 ms
15:52:38.105 INFO  - Execute decorators...
15:52:38.580 INFO  - Store results in database

Jacoco abgeholt hat die test.exec - Datei, aber die Berichterstattung "No information about coverage per test"

Was bedeutet, dass log-Anweisung bedeuten? Die sonar-server tatsächlich macht korrekte Berichterstattung! Ist es ein Indikator für die fehlende test-Erfolg berichtet, die von Sonar? Was fehlt für immer die Einheit

Unit Tests Coverage
50,0%
50,0% line coverage

Unit test success
0 tests 

Den vollen gradle bauen.Skript:

ext {
    spockVersion = '0.7-groovy-2.0'
    groovyVersion = '2.2.1'
}

apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'jacoco'
apply plugin: 'sonar-runner'

group = "poc"
version = "1.0.0-SNAPSHOT"

sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
    maven {
        credentials {
            username "${artifactoryUsername}"
            password "${artifactoryPassword}"
        }
        url "${artifactoryContextUrl}"
    }
}

dependencies {
    testCompile "junit:junit-dep:4.11"
    testCompile "org.codehaus.groovy:groovy-all:$groovyVersion"
    testCompile "org.spockframework:spock-core:$spockVersion"
}

tasks.withType(Test) { task ->
    jacoco {
        destinationFile = file("$buildDir/jacoco/${task.name}.exec")
    }
}

sonarRunner {
    sonarProperties {
        property 'sonar.projectName', rootProject.name
        property 'sonar.projectDescription', rootProject.name

        //sonar server and database
        property "sonar.host.url", sonarHostUrl
        property "sonar.jdbc.url", sonarJdbcUrl
        //property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
        property "sonar.jdbc.username", sonarJdbcUsername
        property "sonar.jdbc.password", sonarJdbcPassword
        property 'sonar.sourceEncoding', 'UTF-8'
    }
}

tasks.sonarRunner.dependsOn = []
  • Nach Durchlaufen der log-einmal mehr, ich habe gefunden eine weitere verdächtige Warnung: 16:31:18.438 WARN - Reports path not found: /poc-sonar/build/sonar/build/surefire-reports Sonar runner ist auf der Suche für die test-report-Datei an der falschen Stelle. Die Frage ist, wie kann Sonar runner konfiguriert werden, um den Blick in $project.buildDir/test-results der Standard für die test-report-Ausgabe?
InformationsquelleAutor Martin Ahrer | 2014-01-24
Schreibe einen Kommentar