Ich möchte Testergebnisse sehen (system.out / err, Protokollmeldungen von zu testenden Komponenten), wie sie in derselben Konsole ausgeführt werden, die ich ausführe:
gradle test
Und warten Sie nicht, bis die Tests abgeschlossen sind, um die Testberichte anzuzeigen (die erst generiert werden, wenn die Tests abgeschlossen sind, sodass ich während der Ausführung der Tests nichts "verfolgen" kann).
test
Abschlusses konfigurieren .-i
wird eine Menge irrelevanter Infos auf das Terminal werfen.grep
damit Tausende von unerwünschten Zeilen herausfiltern. Siehe stackoverflow.com/questions/3963708/…Hier ist meine schicke Version:
quelle
|
aus dem entfernt,startItem
weil das Ausführen der Aufgabe über Android Studio 2.2.3 sie als Fehler in Nachrichten erkennt und es bei erfolgreichen Builds ärgerlich war.Sie können Ihrer build.gradle-Datei einen Groovy-Abschluss hinzufügen, der die Protokollierung für Sie übernimmt:
Auf Ihrer Konsole lautet es dann wie folgt:
Seit Version 1.1 unterstützt Gradle viel mehr Optionen zum Protokollieren der Testausgabe . Mit diesen Optionen können Sie eine ähnliche Ausgabe mit der folgenden Konfiguration erzielen:
quelle
Als stefanglase antwortete:
Das Hinzufügen des folgenden Codes zu Ihrem
build.gradle
(seit Version 1.1) funktioniert einwandfrei für die Ausgabe bei bestandenen , übersprungenen und fehlgeschlagenen Tests.Was ich zusätzlich sagen möchte (ich habe herausgefunden, dass dies für den Anfang ein Problem ist), ist, dass der
gradle test
Befehl den Test nur einmal pro Änderung ausführt .Wenn Sie es also das zweite Mal ausführen, werden die Testergebnisse nicht ausgegeben . Sie können dies auch in der Gebäudeausgabe sehen: gradle sagt dann bei Tests UP-TO-DATE . Es wird also nicht zum n-ten Mal ausgeführt.
Smart Gradle!
Wenn Sie die Ausführung der Testfälle erzwingen möchten, verwenden Sie
gradle cleanTest test
.Dies ist etwas abseits des Themas, aber ich hoffe, es wird einigen Neulingen helfen.
bearbeiten
Wie in den Kommentaren angegeben, sparc_spread :
Wenn Sie gradle erzwingen wollen immer laufen neue Prüfungen (die immer vielleicht keine gute Idee sein) können Sie hinzufügen
outputs.upToDateWhen {false}
zutestLogging { [...] }
. Lesen Sie hier weiter .Frieden.
quelle
gradle cleanTest test
jedes Mal etwas sagen zu müssen (ab Gradle 1.12). Hinzufügenoutputs.upToDateWhen {false}
zutestLogging {...}
und das sollte den Trick tun. Gradle wird gezwungen, die Tests jedes Mal auszuführen. Ich habe dies in den Gradle-Foren gefunden, die von Dockter selbst gepostet wurden . Hoffe das hilft.exceptionFormat "full"
hinzufügen, um Details darüber zu erhalten, was fehlgeschlagen ist, nützlich, wenn Sie AssertJ oder eine ähnliche Bibliothek verwenden.cleanTest
Ihnen könnentest --rerun-tasks
--rerun-tasks
, dass alle Ihre Aufgaben erneut ausgeführt werden, nicht nur die Aufgaben für die Tests.cleanTest test
funktioniert das neueste Android Studio und Gradle 3.3 nicht auf meiner Seite, hat aber--rerun-tasks
den Trick gemacht. Ich weiß nicht warum. Aber das Lesen dieser Antwort hat meine Kopfschmerzen wirklich gelöst. Wo ist die Protokollierung des Testes, nachdem ich alles hinzugefügt habe?Haftungsausschluss: Ich bin der Entwickler des Gradle Test Logger Plugins.
Sie können einfach das Gradle Test Logger Plugin verwenden , um schöne Protokolle auf der Konsole zu drucken. Das Plugin verwendet sinnvolle Standardeinstellungen, um die meisten Benutzer mit wenig oder keiner Konfiguration zufrieden zu stellen, bietet aber auch eine Reihe von Themen und Konfigurationsoptionen für jeden Geschmack.
Beispiele
Standardthema
Mokka-Thema
Verwendung
Stellen Sie sicher, dass Sie immer die neueste Version von Gradle Central erhalten .
Aufbau
Sie benötigen überhaupt keine Konfiguration. Das Plugin bietet jedoch einige Optionen. Dies kann wie folgt erfolgen (Standardwerte werden angezeigt):
Ich hoffe, Sie werden es genießen, es zu benutzen.
quelle
slowThreshold
auf ein0
.Fügen Sie dies hinzu, um
build.gradle
zu verhindern, dass Gradle stdout und stderr verschluckt.Es ist hier dokumentiert .
quelle
Die 'Test'-Aufgabe funktioniert nicht für das Android-Plugin. Verwenden Sie für das Android-Plugin Folgendes:
Siehe folgendes: https://stackoverflow.com/a/31665341/3521637
quelle
Als Folge von Shubhams großartiger Antwort möchte ich vorschlagen, Enum- Werte anstelle von Zeichenfolgen zu verwenden . Bitte schauen Sie sich die Dokumentation der TestLogging-Klasse an .
quelle
Meine minimalistische Lieblingsversion basiert auf der Antwort von Shubham Chaudhary.
Legen Sie dies in die
build.gradle
Datei:quelle
In Gradle mit Android-Plugin:
Dann wird die Ausgabe sein:
quelle
Merge von Shubhams großartiger Antwort und JJD verwenden Enum anstelle von String
quelle
In Anlehnung an die Antwort von Benjamin Muschko (19. März 2011) können Sie die
-i
Flagge zusammen mit grep verwenden , um Tausende unerwünschter Zeilen herauszufiltern. Beispiele:Starker Filter - Zeigt nur den Namen und das Ergebnis jedes Komponententests sowie den gesamten Build-Status an. Setup-Fehler oder Ausnahmen werden nicht angezeigt.
Weicher Filter - Zeigt den Namen und das Ergebnis jedes Komponententests sowie Setup-Fehler / Ausnahmen an. Es wird aber auch einige irrelevante Informationen enthalten:
Weicher Filter, alternative Syntax: (Suchtoken werden in einzelne Zeichenfolgen aufgeteilt)
Erläuterung der Funktionsweise: Die Ausgabe des ersten Befehls
./gradlew test -i
wird an einen zweiten Befehl weitergeleitetgrep
, der viele unerwünschte Zeilen basierend auf einem regulären Ausdruck herausfiltert."-E"
aktiviert den regulären Ausdrucksmodus und"|"
bedeutet "oder". Ein Komponententestname und ein Ergebnis dürfen mit angezeigt werden" > "
, und der Gesamtstatus ist mit zulässig"BUILD"
. Im"-v"
Softfilter bedeutet das Flag "nicht enthalten" und"^"
"Zeilenanfang". Es werden also alle Zeilen entfernt, die mit "Ausführen" oder "Erstellen" usw. beginnen.Beispiel für Android Instrumentation Unit Tests mit Gradle 5.1:
Beispiel für die Jacoco-Unit-Test-Abdeckung mit Gradle 4.10:
quelle
Wenn Sie ein
build.gradle.kts
in Kotlin DSL geschriebenes haben , können Sie Testergebnisse mit drucken (ich habe ein kotlin Multi-Plattform-Projekt entwickelt, ohne dass ein "Java" -Plugin angewendet wurde):quelle