Pas de test de l'unité de succès rapporté à sonar
Un build gradle est la création d'un jacoco rapport qui est capté par le sonar coureur. Après le sonar résultats sont poussés à l'échelle du serveur, de l'unité de la couverture de test est affiché, mais l'unité de la réussite du test est de 0, même si tous les tests sont exécutés avec succès.
Regardant le sonar coureur journal, je vois les éléments suivants déclaration de la source et de classes d'emplacements:
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
C'est la collecte de la première question: est-ce Sonar ont à voir la compilation des classes de test pour l'analyse?
Plus bas dans le journal:
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 a ramassé le test.exec
fichier, mais les rapports "No information about coverage per test"
Quel est le journal de l'énoncé signifie? Le sonar serveur expose correct de la couverture! Est-il un indicateur du manque réussite du test rapporté par Sonar? Ce qui manque pour arriver à l'unité
Unit Tests Coverage
50,0%
50,0% line coverage
Unit test success
0 tests
Le plein de build gradle.script:
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 = []
16:31:18.438 WARN - Reports path not found: /poc-sonar/build/sonar/build/surefire-reports
Sonar coureur est à la recherche pour le fichier de rapport de test dans le mauvais endroit. La question est de savoir comment le Sonar runner être configuré pour regarder dans $project.buildDir/test-results
qui est la valeur par défaut pour le test de la sortie du rapport?OriginalL'auteur Martin Ahrer | 2014-01-24
Vous devez vous connecter pour publier un commentaire.
Dans les dernières versions de Sonar, Sonar de propriété pour le rapport de test de l'emplacement a été renommé de
sonar.surefire.reportsPath
àsonar.junit.reportsPath
. Par conséquent, vous pouvez avoir à définir l'-ci manuellement. Par exemple:property "sonar.junit.reportsPath", "$buildDir/test-results/"
a fait le tour pour moi.Gradle 1.12 sera livré avec un correctif pour ce problème.
C'est sûr qu'il a fait un travail. Merci!
OriginalL'auteur Peter Niederwieser