Je voudrais voir les résultats des tests (system.out / err, journaux des composants testés) lorsqu'ils s'exécutent dans la même console que j'exécute:
gradle test
Et n'attendez pas que les tests soient terminés pour consulter les rapports de test (qui ne sont générés que lorsque les tests sont terminés, donc je ne peux rien "tail -f" pendant que les tests sont en cours)
test
fermeture.-i
jettera un tas d'informations non pertinentes sur le terminal.grep
pour filtrer les milliers de lignes indésirables. Voir stackoverflow.com/questions/3963708/…Voici ma version fantaisie:
la source
|
dustartItem
car l'exécution de la tâche via Android Studio 2.2.3 les reconnaît comme des erreurs dans les messages et c'était ennuyeux pour les builds réussis.Vous pouvez ajouter une fermeture Groovy dans votre fichier build.gradle qui effectue la journalisation pour vous:
Sur votre console, il se lit alors comme suit:
Depuis la version 1.1, Gradle prend en charge beaucoup plus d'options pour enregistrer la sortie de test . Avec ces options à portée de main, vous pouvez obtenir une sortie similaire avec la configuration suivante:
la source
Comme l'a répondu stefanglase :
l'ajout du code suivant à votre
build.gradle
(depuis la version 1.1) fonctionne bien pour la sortie des tests réussis , ignorés et échoués .Ce que je veux dire en plus (j'ai découvert que c'est un problème pour les démarreurs), c'est que la
gradle test
commande n'exécute le test qu'une seule fois par changement .Donc, si vous l'exécutez la deuxième fois, il n'y aura pas de sortie sur les résultats des tests . Vous pouvez également le voir dans la sortie du bâtiment: gradle indique ensuite UP-TO-DATE lors des tests. Donc, ce n'est pas exécuté une énième fois.
Gradle intelligent!
Si vous souhaitez forcer l'exécution des scénarios de test, utilisez
gradle cleanTest test
.Ceci est légèrement hors sujet mais j'espère que cela aidera certains débutants.
Éditer
Comme l'a indiqué sparc_spread dans les commentaires:
Si vous voulez forcer gradle à de nouveaux essais toujours courir ( ce qui pourrait être pas toujours une bonne idée) que vous pouvez ajouter
outputs.upToDateWhen {false}
àtestLogging { [...] }
. Continuez à lire ici .Paix.
la source
gradle cleanTest test
chaque fois (à partir de Gradle 1.12). Ajoutezoutputs.upToDateWhen {false}
àtestLogging {...}
et cela devrait faire l'affaire. Cela obligera Gradle à exécuter les tests à chaque fois. Je l'ai trouvé dans les forums Gradle, publiés par Dockter lui-même . J'espère que cela t'aides.exceptionFormat "full"
pour obtenir des détails sur ce qui a échoué, utile lorsque vous utilisez AssertJ ou lib similaire.cleanTest
vous pouvez utilisertest --rerun-tasks
--rerun-tasks
que toutes vos tâches seront réexécutées, pas seulement les tâches pour les tests.cleanTest test
sur le dernier Android Studio et Gradle 3.3 ne fonctionne pas de mon côté, mais a--rerun-tasks
fait l'affaire. Je ne sais pas pourquoi. Mais la lecture de cette réponse a vraiment résolu mon mal de tête, où est la journalisation du test f ** king après avoir ajouté tout.Avertissement: je suis le développeur du plug-in Gradle Test Logger.
Vous pouvez simplement utiliser le plug-in Gradle Test Logger pour imprimer de beaux journaux sur la console. Le plugin utilise des valeurs par défaut raisonnables pour satisfaire la plupart des utilisateurs avec peu ou pas de configuration, mais offre également un certain nombre de thèmes et d'options de configuration pour convenir à tout le monde.
Exemples
Thème standard
Thème moka
Usage
Assurez-vous de toujours obtenir la dernière version de Gradle Central .
Configuration
Vous n'avez besoin d'aucune configuration. Cependant, le plugin propose quelques options. Cela peut être fait comme suit (valeurs par défaut affichées):
J'espère que vous apprécierez de l'utiliser.
la source
slowThreshold
sur0
.Ajoutez ceci pour
build.gradle
empêcher Gradle d'avaler stdout et stderr.C'est documenté ici .
la source
La tâche 'test' ne fonctionne pas pour le plugin Android, pour le plugin Android, utilisez ce qui suit:
Voir ce qui suit: https://stackoverflow.com/a/31665341/3521637
la source
Dans le prolongement de la grande réponse de Shubham, j'aime suggérer d'utiliser des valeurs d' énumération au lieu de chaînes . Veuillez consulter la documentation de la classe TestLogging .
la source
Ma version minimaliste préférée basée sur la réponse de Shubham Chaudhary.
Mettez ceci dans un
build.gradle
fichier:la source
Dans Gradle en utilisant le plugin Android:
La sortie sera alors:
la source
Fusion de la grande réponse de Shubham et JJD utilise une énumération au lieu d'une chaîne
la source
Suite à la réponse de Benjamin Muschko (19 mars 2011), vous pouvez utiliser le
-i
drapeau avec grep pour filtrer des milliers de lignes indésirables. Exemples:Filtre puissant - N'affiche que le nom et le résultat de chaque test unitaire, ainsi que l'état général de la construction. Les erreurs ou exceptions de configuration ne s'affichent pas.
Filtre souple - Affiche le nom et le résultat de chaque test unitaire, ainsi que les erreurs / exceptions de configuration. Mais il comprendra également des informations non pertinentes:
Filtre souple, syntaxe alternative: (les jetons de recherche sont divisés en chaînes individuelles)
Explication de son fonctionnement: la sortie de la première commande
./gradlew test -i
,, est dirigée vers une deuxième commandegrep
, qui filtrera de nombreuses lignes indésirables sur la base d'une expression régulière."-E"
active le mode d'expression régulière et"|"
signifie "ou". Un nom et un résultat de test unitaire peuvent s'afficher à l'aide de" > "
, et l'état général est autorisé avec"BUILD"
. Dans le filtre souple, le"-v"
drapeau signifie "ne contenant pas" et"^"
signifie "début de ligne". Il supprime donc toutes les lignes commençant par "Exécuter" ou commencer par "Créer", etc.Exemple pour les tests unitaires d'instrumentation Android, avec gradle 5.1:
Exemple de couverture de test unitaire Jacoco, avec gradle 4.10:
la source
Si vous avez un DSL
build.gradle.kts
écrit dans Kotlin, vous pouvez imprimer les résultats des tests avec (je développais un projet multi-plateforme kotlin, sans plugin "java" appliqué):la source
Ajoutez simplement la fermeture suivante à votre build.gradle. la sortie sera imprimée après l'exécution de chaque test.
la source