Ein gradle Build ist die Schaffung eines jacoco Bericht Sonar, die durch Sonar Läufer aufgenommen wird. Nachdem die Sonarergebnisse an den Sonarserver übertragen wurden, wird die Einheitentestabdeckung angezeigt, der Komponententesterfolg ist jedoch 0, obwohl alle Tests erfolgreich ausgeführt wurden.Keine Einheit Test Erfolg berichtet
Mit Blick auf dem Sonar-runner Protokoll sehe ich die folgenden Elemente, die Quelle und Klassen Standorte berichten:
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 aufwirft: Ist Sonar hat die kompilierten Testklassen für die Analyse zu sehen?
Weiter unten in dem Protokoll:
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 hat nahm die test.exec
Datei, aber die Berichterstattung "No information about coverage per test"
Was bedeutet, dass Log-Anweisung bedeuten? Der Sonarserver deckt tatsächlich die korrekte Abdeckung auf! Ist das ein Indikator für den fehlenden Sonar-Testerfolg? Was
Unit Tests Coverage
50,0%
50,0% line coverage
Unit test success
0 tests
Der vollständige gradle build.script die Einheit fehlt für immer:
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 = []
Nachdem durch das Protokoll ging wieder Ich habe eine misstrauische Warnung gefunden: '16: 31: 18,438 WARN - Berichte Pfad nicht gefunden:/PoC-Sonar/build/Sonar/build/todsicheren -reports' Sonar Läufer suchen die Prüfbericht Datei in der falschen Stelle. Die Frage ist, wie kann der Sonar-Runner so konfiguriert werden, dass er in '$ project.buildDir/test-results' nachschaut, was der Standard für die Testberichtausgabe ist? –