2015-07-15 5 views

Antwort

13

UI Tests in Xcode nimmt automatisch Screenshots Ihrer App nach jedem Schritt.

Gehen Sie einfach zu einem der Tests, die bereits ausgeführt wurden (Berichtsnavigator> wählen Sie einen Test), und erweitern Sie dann Ihre Tests. Wenn Sie mit der Maus über die Stufen fahren, sehen Sie neben jedem Schritt, der einen Screenshot enthält, Augensymbole.

Hier ist ein Beispiel ... in diesem Fall, beachten Sie das Augensymbol am Ende der grauen Reihe. Wenn ich darauf tippen würde, würde ich einen Screenshot der App sehen, wenn die Schaltfläche in meiner App angetippt wurde (seit Schritt Tippen Sie auf die Schaltfläche "Button").

enter image description here

+0

Does in XCode 7.1, diese Arbeit nennen? Ich kann das nicht sehen. Auch durch diesen Prozess wird XCode Screenshots für fehlgeschlagene Testfälle erstellen? – Sravan

+2

Klicken Sie in Xcode 7.1 mit der rechten Maustaste auf den Test und wählen Sie "Zum Bericht springen". –

+1

Gibt es eine Möglichkeit, diese Screenshots innerhalb der Tests selbst zu referenzieren? Dies würde es uns ermöglichen, das Ergebnis einer Aktion mit dem gewünschten Ergebnis zu vergleichen. Ist das möglich? –

1

Facebook-ios-snapshot-test-case und KIF beide laufen als Unit-Tests und sind daher in dem gleichen Prozess wie der App. Als solche können sie direkt auf Ansichten zugreifen und so etwas wie renderView: oder snapshotViewAfterScreenUpdates verwenden. Xcode UI Testing wird in einem separaten Prozess ausgeführt und kann daher nicht direkt auf die Ansichten zugreifen.

Die UI-Automatisierung, Apples inzwischen veraltete Javascript-UI-Testbibliothek, hatte eine Funktion namens captureScreenWithName.

Leider fehlt dem neuen Xcode UI Testing eine ähnliche Funktion in seiner Testbibliothek, was für mich wie eine eklatante Auslassung erscheint und ich empfehle Ihnen, ein Radar dafür einzureichen, da das Erstellen von Screenshots für Wahrnehmungsdifferenztests grundlegend ist es klingt wie du versuchst zu tun). Ich hoffe (und erwarte), dass in der Lage sein wird, diesen Mangel in späteren Xcode-Updates zu beheben.

In der Zwischenzeit gibt es mehr kreative Ansätze für die Erstellung von Screenshots. Sehen Sie sich diesen Stack-Überlauf response für eine Problemumgehung an, bei der der Screenshot in der App selbst erstellt und dann an den Testprozess gesendet wird.

0

Ich habe ein Tool erstellt, das die Tests zuletzt n Screenshots speichert und den JUnit-Testergebnisbericht generiert, indem ich die TestSummaries-Plistdatei aus Testprotokollen analysiere. https://github.com/nacuteodor/ProcessTestSummaries

Vielleicht hilft Ihnen das.

+0

Darf ich Sie bitten, einen Blick auf [Wie biete ich persönliche Open-Source-Bibliotheken?] (Https://meta.stackexchange.com/q/229085) zu sehen? –

3

Wenn Sie Screenshots erstellen möchten, können Sie auch snapshot verwenden, die beschreibt, wie Screenshots in UI Tests auslösen: https://github.com/fastlane/fastlane/tree/master/snapshot#how-does-it-work

Es dreht sich im Grunde um das Gerät zu .Unknown (Source), die einen Schnappschuss auslöst, ohne tatsächlich zu modifizieren Status deiner App

Vergleicht man die Ausgabe mit der erzeugten plist-Datei können Sie auch richtig den Screenshot

+0

Fastlane Snapshot und liefern funktioniert super beim Erstellen von App Store Screenshots. Allerdings suche ich nach einer Lösung, um aus Snapshots eine statische Website zu generieren, die auf reine UITests ausgerichtet ist. Zum Beispiel Screenshots Stapel sind auf Testfälle + Geräte + Sprache getrennt. Können wir in Zukunft einen solchen Geschmack haben oder kennen Sie eine Alternative? – MadNik

+0

Können Sie 'snapshot' nicht dafür verwenden? – KrauseFx

+0

kann ich. Und natürlich benutze ich 'snapshot'. Ich möchte nur eine andere Vorlage für die generierte statische Webseite (eine Trennung von Bildstapeln basierend auf dem Test), an der ich arbeite. Ich habe mich gefragt, ob da schon etwas vorhanden ist. – MadNik