325 votes

Gradle: Comment afficher les résultats des tests dans la console en temps réel?

J'aimerais voir les résultats des tests (system.out / err, consigner les messages des composants testés) lors de l'exécution dans la même console que celle que je lance:

 gradle test
 

Et n'attendez pas que les tests soient terminés pour consulter les rapports de test (ceux-ci ne sont générés que lorsque les tests sont terminés, je ne peux donc rien en queue pendant l'exécution des tests)

Je vous remercie.

234voto

Benjamin Muschko Points 7642

Vous pouvez exécuter Gradle avec le niveau de journalisation INFO en ligne de commande. Il vous montrera le résultat de chaque test en cours d'exécution. L'inconvénient est que vous obtiendrez beaucoup plus de résultats pour d'autres tâches également.

 gradle test -i
 

176voto

stefanglase Points 5482

Vous pouvez ajouter une fermeture Groovy dans votre fichier build.gradle qui effectue la journalisation à votre place:

 test {
    afterTest { desc, result -> 
        println "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}"
    }
}
 

Sur votre console, cela se lit comme suit:

 :compileJava UP-TO-DATE
:compileGroovy
:processResources
:classes
:jar
:assemble
:compileTestJava
:compileTestGroovy
:processTestResources
:testClasses
:test
Executing test maturesShouldBeCharged11DollarsForDefaultMovie [movietickets.MovieTicketsTests] with result: SUCCESS
Executing test studentsShouldBeCharged8DollarsForDefaultMovie [movietickets.MovieTicketsTests] with result: SUCCESS
Executing test seniorsShouldBeCharged6DollarsForDefaultMovie [movietickets.MovieTicketsTests] with result: SUCCESS
Executing test childrenShouldBeCharged5DollarsAnd50CentForDefaultMovie [movietickets.MovieTicketsTests] with result: SUCCESS
:check
:build
 

Depuis la version 1.1, Gradle prend en charge beaucoup plus d’options pour enregistrer les résultats des tests . Avec ces options, vous pouvez obtenir une sortie similaire avec la configuration suivante:

 test {
    testLogging {
        events "passed", "skipped", "failed"
    }
}
 

151voto

jan1337z Points 2088

Comme stefanglase répondu:

en ajoutant le code suivant à votre build.gradle (depuis la version 1.1) fonctionne très bien pour la sortie sur le passé, sauté et a échoué les tests.

test {
    testLogging {
        events "passed", "skipped", "failed", "standardOut", "standardError"
    }
}

Ce que je veux dire en plus (j'ai trouvé que c'est un problème pour les débutants), c'est que l' gradle test commande exécute le test qu'une seule fois par le changement.

Donc, si vous exécutez la deuxième fois il n'y aura pas de sortie sur les résultats des tests. Vous pouvez le voir dans le bâtiment de sortie: gradle puis dit À JOUR sur les tests. Donc ce n'est pas exécuté une n-ème fois.

Smart gradle!

Si vous voulez forcer les cas de test à exécuter, utiliser gradle cleanTest test.

C'est un peu hors sujet, mais j'espère que ça aidera certains débutants.

modifier

Comme sparc_spread indiqué dans les commentaires:

Si vous voulez forcer gradle à toujours exécuter les frais des tests (qui pourrait ne pas toujours être une bonne idée), vous pouvez ajouter outputs.upToDateWhen {false} de testLogging { [...] }. Continuer la lecture ici.

La paix.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X