Wo wird die Log-Ausgabe geschrieben, wenn Robolectric + Roboguice verwendet wird?
Ich bin mit Robolectric test Android. Ich bin mit meinen tests mittels maven, z.B.
mvn -Dtest=LogTest test
Wenn ich code haben, der schreibt die logs, wie
Log.d("TAG", "blah");
oder mit Roboguice ist Ln
Ln.d("blah");
Sehe ich keine Ausgabe in maven - surefire-logs (text-Dateien).
Ideal, eigentlich möchte ich einfache log-statements zu gehen, um die Konsole. Ich kann das schreiben in die Konsole mithilfe System.out.println("blah")
aber natürlich würde ich eher verwenden, die unterstützt logging-APIs.
Meine Frage ist also, warum bin ich nicht zu sehen, log-Ausgaben, und wie bekomme ich die log-Meldungen in die Konsole geschrieben?
InformationsquelleAutor der Frage Tyler Collier | 2012-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mit robolectric-2.0-alpha-3.
Was für mich gearbeitet war, war in der setUp-Methode meiner test den stream
stdout
Etwas wie:
Mit dieser version von robolectric ich hatte kein Erfolg, das gleiche zu tun (
ShadowLog.stream = System.out
) in einem benutzerdefinierten TestRunner oder in meinem TestLifeycleApplication.Einstellung der system-property
System.setProperty("robolectric.logging","stdout");
war keine Wirkung als gut, aber es könnte funktioniert in älteren Versionen.InformationsquelleAutor der Antwort Jesus Monzon Legido
Im mit robolectric 2.3. Wie funktioniert für mich:
In meine @Vor:
In meinem test-Funktionen, die ich verwenden kann (ShadowLog. andere Optionen):
In meinem getestet-Klasse, ich kann einige Nachrichten im Protokoll mit:
InformationsquelleAutor der Antwort Bamumi
Standardmäßig ist die Protokollierung von output bei Verwendung der RobolectricTestRunner verschwindet. Sie können konfigurieren, wo es geht, indem man die setupLogging() - Methode der Klasse.
Zusammenzufassen, müssen Sie die
robolectric.logging
system-Eigenschaft entwederstdout
stderr
oder eine Datei Pfad, wo das log geschrieben werden soll. Ich mache das im Konstruktor einer Unterklasse vonRobolectricTestRunner
dass ich bei allen tests so, dass die Protokolle immer bekommen auf stdout geschrieben.InformationsquelleAutor der Antwort scompt.com
Fügen Sie den folgenden, um Ihre test-setup bevor der test ausgeführt wird:
https://groups.google.com/forum/?fromgroups=#!msg/robolectric/PK-9cQQQROw/svuQzM5h_vsJ
InformationsquelleAutor der Antwort emmby
Bei der Ausführung von tests mit maven alles, was Sie brauchen, ist etwas wie dieses :
Beim ausführen der tests, die lokal, z.B. in intellij, dann alles, was Sie brauchen, ist ein environment-Variablen:
Gehen Sie einfach (für intellij) Run/Debug Configurations --> Defaults -->Junit --> VM-Optionen und fügen Sie
InformationsquelleAutor der Antwort sakis kaliakoudas
Die Lösung, die funktionierte für mich am besten (oder überhaupt) wurde zur Initialisierung eine Ersatz injiziert Umsetzung (während der Tests nur) von RoboGuice ist Ln.Print-Klasse zu tun System.aus Druck-anstelle von Android Log drucken, da war ich eigentlich mit Robolectric zu vermeiden, hängen von der Android-subsystem laufen meine tests in den ersten Platz.
Vom Ln.java:
Also im Grunde:
und:
Natürlich vorausgesetzt, die standard-Robolectric init Haken Sie das Modul mit RoboGuice:
InformationsquelleAutor der Antwort Roberto Andrade