Wie man screenshot an der Stelle, wo der test fehlschlagen, im Espresso?
Ich bin auf der Suche nach einem Weg, um einen screenshot von Gerät nach dem test gescheitert, und bevor Sie geschlossen wird.
- Sie können verwenden, Löffel (square.github.io/Löffel) - Bibliothek für diesen Zweck.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfachste Weg, die ich gefunden habe:
TestWatcher
versuchen Sie die Registrierung espresso-Fehler-handler, wie hier beschrieben, developer.android.com/training/testing/espresso/...Eine weitere Verbesserung zu den vorherigen Antworten. Ich bin mit den experimentellen Screenshot-API
Habe ich CustomScreenCaptureProcessor weil BasicScreenCaptureProcessor verwendet /sdcard/Bilder/ Ordner und ich stieß IOExceptions auf einigen Geräten beim erstellen der Ordner/Bild. Bitte beachten Sie, dass Sie benötigen, um Ihren Prozessor in der gleichen Verpackung
Dann in Ihrer base Espresso-test Klasse nur hinzufügen
Wenn Sie wollen verwenden Sie einige geschützte Ordner, dieser hat den trick auf einem emulator, tho es hat nicht funktioniert auf einem physischen Gerät
CustomScreenCaptureProcessor
. Ansonsten bekomme ich:java.io.IOException: The directory /storage/emulated/0/Pictures/screenshots does not exist and could not be created or is not writable.
.CustomScreenCaptureProcessor
Sie zur Verfügung gestellt. Es gibt nichts, was ich habe, dass es nicht auf Ihre Antwort.Habe ich nicht verwendet, screenshots in meinem Android testen, noch, aber ich weiß, dass einige Lösungen, die hilfreich sein könnten:
Löffel
der beste Weg, es zu tun wäre, die Nutzung
Emma
oderSpoon
Rahmen.Hier würden Sie finden einige nützliche Informationen, wie es zu tun:
http://elekslabs.com/2014/05/creating-test-reports-for-android-with-spoon-and-emma.html
Besuchen Sie auch
Spoon
's offizielle Github-Website: https://github.com/square/spoon und seine Gradle-plugin: https://github.com/stanfy/spoon-gradle-pluginund check Verwandte Themen: Wie man Löffel screenshots für Espresso-tests?
screenshot-tests-for-android/
Können Sie auch versuchen, diese Facebook-Bibliothek: https://facebook.github.io/screenshot-tests-for-android/
Robotium ist ScreenshotTaker
Da hab ich schon wissen, mit
Robotium
test-framework ermöglicht die Erstellung test mit screenshots. Check: Richtige Weg, um take screenshot mit Robotium und GurkeWenn Sie nicht möchten, dass jede Bibliothek verwenden, überprüfen Sie die Quelle code von
Robotium
framework-Klasse genanntScreenshotTaker.java
[klicken Sie auf link zu sehen] und schreiben Sie Ihre eigeneScreenshotTaker
Klasse.Hoffe, es wird helfen.
Schreiben einer benutzerdefinierten TestWatcher wie die anderen Antworten erklärt, ist der Weg zu gehen.
ABER (und es dauerte eine lange Zeit, um es zu bemerken) gibt es eine Einschränkung: Die Regel könnte Feuer zu spät, D. H. nach Ihrer Tätigkeit war bereits zerstört. Dies lässt Sie mit einem screenshot von dem Gerät home-Bildschirm und nicht von dem fehlerhaften Aktivität.
Lösen können Sie dieses mit RuleChain: Statt zu schreiben
Haben Sie zu schreiben:
Diese stellt sicher, dass der screenshot gemacht wird und dann die Aktivität zerstört wird
Ich einige Verbesserungen vorgenommen, auf diese Antwort. Keine Notwendigkeit, fügen Sie eine zusätzliche Abhängigkeit für UiAutomator und es funktioniert auch unter api-level 18.
Fügen Sie dann die folgende Zeile in die test-Klasse:
@Maragues Antwort portiert Kotlin:
Helfer-Klassen:
Verwendung:
Bibliotheken deklariert app
build.gradle
:Diesem setup speichert einen screenshot jedes mal einen test fertig in den Ordner:
/sdcard/Android/data/your.package.name/files/Pictures
Navigieren Sie dort über den Android Studio die Geräte-Datei-Explorer (auf der rechten sidebar)
Wenn Sie gerne speichern von screenshots nur für fehlgeschlagene tests, überschreiben Sie die
failed
Methode derTestWatcher
statt derfinished