Je suis en train de mettre en place un projet gradle multi-modules et j'essaie de séparer les tests d'intégration pour tous les sous-projets. J'ai réussi à créer la tâche integTest et je peux voir qu'elle construit les classes de tests d'intégration et crée des rapports de tests d'intégration dans des répertoires différents de ceux des tests unitaires. Cependant, elle n'exécute pas mon test d'intégration.
La structure du projet est la suivante
|_ gradle
| |_ integration-test.gradle
|_ subproject
| |_ src
| | |_ main
| | | |_ java
| | | |_ resources
| | |_ test
| | | |_ java
| | | |_ resources
| | |_ integTest
| | |_ java
| | | |_sit
| | | |_ MyTest.java
| | |_ resources
| |_ build.gradle
|_ build.gradle
|_ gradle.properties
|_ settings.gradle
Dans le fichier integration-test.gradle, j'ai
sourceSets {
integTest {
java.srcDir file('src/integTest/java')
resources.srcDir file('src/integTest/resources')
compileClasspath += sourceSets.main.output + configurations.testRuntimeClasspath
runtimeClasspath += output + compileClasspath
}
}
dependencies {
integTestCompile sourceSets.main.output
integTestCompile sourceSets.test.output
integTestCompile configurations.compile
integTestCompile configurations.testCompile
integTestRuntime configurations.runtime
integTestRuntime configurations.testRuntime
}
task integTest(type: Test) {
group = LifecycleBasePlugin.VERIFICATION_GROUP
description = 'Runs the integration tests.'
maxHeapSize = '1024m'
testClassesDir = sourceSets.integTest.output.classesDir
classpath = sourceSets.integTest.runtimeClasspath
binResultsDir = file("$buildDir/integration-test-results/binary/integTest")
reports {
html.destination = "$buildDir/reports/integration-test"
junitXml.destination = "$buildDir/integration-test-results"
}
mustRunAfter tasks.test
}
check.dependsOn integTest
Ensuite, dans le sous-projet build.gradle, j'ajoute ce qui suit en haut de la page
apply from: "$rootDir/gradle/integration-test.gradle"
Après l'exécution gradle clean build
Je peux voir les tests unitaires se construire et s'exécuter et voir les rapports de test après coup. Je peux également voir que les tests d'intégration sont construits dans un répertoire integTest séparé, sous les classes dans le répertoire de construction. Je vois également un nouveau répertoire integration-test-results créé dans le répertoire de construction, mais les tests définis dans MyTest.java ne s'exécutent pas.
Je vois également ceci dans la console lorsque je lance le programme avec l'option -i
> Task :javaproject:integTest
Task ':javaproject:integTest' is not up-to-date because:
Output property 'binResultsDir' file E:\dev\java\workspace\javaproject\subproject\build\integration-test-results\binary\integTest has been removed.
Output property 'binResultsDir' file E:\dev\java\workspace\javaproject\subproject\build\integration-test-results\binary\integTest\output.bin has been removed.
Output property 'binResultsDir' file E:\dev\java\workspace\javaproject\subproject\build\integration-test-results\binary\integTest\output.bin.idx has been removed.
Finished generating test XML results (0.0 secs) into: E:\dev\java\workspace\javaproject\subproject\build\integration-test-results
Generating HTML test report...
Finished generating test html results (0.006 secs) into: E:\dev\java\workspace\javaproject\subproject\build\reports\integration-test
:javaproject:integTest (Thread[Task worker for ':',5,main]) completed. Took 0.092 secs.
:javaproject:check (Thread[Task worker for ':',5,main]) started.