2017-03-10 2 views
1

Je veux mesurer la couverture par Jacoco dans le projet model, l'un des projets de l'enfant. Cependant, après la tâche test, la tâche jacocoTestReport est ignorée.Comment configurer Jacoco avec Spek dans un multi-projet?

test:

:model:compileKotlin UP-TO-DATE 
:model:compileJava UP-TO-DATE 
:model:copyMainKotlinClasses UP-TO-DATE 
:model:processResources UP-TO-DATE 
:model:classes UP-TO-DATE 
:model:compileTestKotlin UP-TO-DATE 
:model:compileTestJava UP-TO-DATE 
:model:copyTestKotlinClasses UP-TO-DATE 
:model:processTestResources UP-TO-DATE 
:model:testClasses UP-TO-DATE 
3 10, 2017 8:17:48 org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry loadTestEngines 
Discovered TestEngines with IDs: [spek] 
:model:junitPlatformTest 
Test run finished after 113 ms 
[   4 containers found  ] 
[   0 containers skipped ] 
[   4 containers started ] 
[   0 containers aborted ] 
[   4 containers successful ] 
[   0 containers failed  ] 
[   1 tests found   ] 
[   0 tests skipped   ] 
[   1 tests started   ] 
[   0 tests aborted   ] 
[   1 tests successful  ] 
[   0 tests failed   ] 
:model:test 
:model:test SKIPPED 

Ensuite, un fichier xml est sortie. (Modèle/build/test-résultats/JUnit-plateforme/TEST-spek.xml)

jacocoTestReport:

:model:compileKotlin UP-TO-DATE 
:model:compileJava UP-TO-DATE 
:model:copyMainKotlinClasses UP-TO-DATE 
:model:processResources UP-TO-DATE 
:model:classes UP-TO-DATE 
:model:jacocoTestReport SKIPPED 

build.gradle:

buildscript { 
    ext.kotlinVersion = '1.1.0' 
    repositories { 
     mavenLocal() 
     mavenCentral() 
     maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 
    } 
    dependencies { 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" 
     classpath "org.junit.platform:junit-platform-gradle-plugin:1.0.0-M3" 
    } 
} 

allprojects { 
    ext { 
     spekVersion = '1.1.0-beta3' 
    } 

    repositories { 
     mavenLocal() 
     mavenCentral() 
     jcenter() 
     maven { url "http://dl.bintray.com/jetbrains/spek" } 
     maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 
     maven { url "https://oss.sonatype.org/content/repositories/releases/" } 
    } 
} 

project(":model") { 
    apply plugin: "java" 
    apply plugin: "kotlin" 
    apply plugin: 'org.junit.platform.gradle.plugin' 
    apply plugin: "jacoco" 

    jacoco { 
     reportsDir = file("$rootProject.buildDir/reports/jacoco") 
    } 

    jacocoTestReport { 
     reports { 
      html.enabled = true 
      xml.enabled = true 
      csv.enabled = false 
     } 
    } 

    junitPlatform { 
     filters { 
      engines { 
       include 'spek' 
      } 
     } 
    } 

    dependencies { 
     compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion" 
     testCompile "org.jetbrains.spek:spek-api:$spekVersion" 
     testCompile 'org.amshove.kluent:kluent:1.14' 
     testRuntime "org.jetbrains.spek:spek-junit-platform-engine:$spekVersion" 
     testRuntime 'org.junit.platform:junit-platform-console:1.0.0-M3' 
    } 
} 

Que dois-je faire pour jacocoTestReport tâche réussie?

[EDIT]

Quand j'ajoute onlyIf, jacocoTestReport tâche est exécutée, mais il échoue encore.

jacocoTestReport { 
    onlyIf = { 
     true 
    } 
} 

La sortie:

:model:compileKotlin UP-TO-DATE 
:model:compileJava UP-TO-DATE 
:model:copyMainKotlinClasses UP-TO-DATE 
:model:processResources UP-TO-DATE 
:model:classes UP-TO-DATE 
:model:jacocoTestReport FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':model:jacocoTestReport'. 
> Unable to read execution data file model\build\jacoco\test.exec 
+1

Cela pourrait aider http://stackoverflow.com/a/42520303/1425525 – raniejade

+0

était-il utile? Puisque dans l'autre question n'était pas (trop) utile, je pourrais le déplacer ici. –

Répondre

0

Par défaut, le plug-in JUnit Gradle désactive la tâche de test standard Gradle, mais cela peut être remplacé par le drapeau enableStandardTestTask. Il semble que la tâche jacocoTestReport recherche cela.

junitPlatform { 
    filters { 
     engines { 
      include 'spek' 
     } 
    } 

    enableStandardTestTask true 
} 

Voir http://junit.org/junit5/docs/current/user-guide/#running-tests-build