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 = []
Après être passé par le journal une fois de plus je l'ai trouvé un plus suspect avertissement: 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