2015-11-13 11 views
5

Ich habe mehrere UI-Tests, die ich erfolgreich einzeln oder gruppiert habe. Am Ende habe ich meine Tests in bestimmte Klassen aufgeteilt und sie so ausgeführt. Das Problem, auf das ich gestoßen bin, ist, dass Xcode die UI-Tests in alphabetischer Reihenfolge ausführt und nicht in der Reihenfolge, in der es geschrieben/angezeigt wird. Irgendeine Idee, wie man das schafft?Xcode 7 UI Test Bestellung

Danke

+0

Für meine Tests schrieb ich ein paar Hilfsfunktionen. 'loginIfNeeded()' nach einem Label suchen, das nur auf der Login-Seite ist und dann den Benutzer anmeldet. Ein ähnlicher 'logoutIfNeeded()' kann für jeden Test verwendet werden, der vom Anmeldebildschirm gestartet werden muss. – JMFR

+0

@JMFR Ich bin neu, um UI Testfälle zu schreiben. kannst du mir bitte helfen oder mir ein Beispiel geben, wie man Hilfsfunktionen schreibt. danke – Urmi

Antwort

7

Eine gute Testsuite nicht in einer bestimmten Reihenfolge ausgeführt zu werden, abhängen. Wenn dies bei Ihnen der Fall ist, haben Sie möglicherweise eine Testverschmutzung. Ich würde eine allgemeine Initialisierungslogik (z. B. das Einloggen des Benutzers) zu der setUp() - Methode der relevanten Tests hinzufügen. Oder erstellen Sie eine Hilfsmethode und teilen Sie diese zwischen den Klassen. Zusammen mit dem Relaunch der App für jeden Test sollte dies die Reihenfolge Ihrer Tests irrelevant machen.

+0

Vielen Dank für die Antwort. Ich bin neu in all dem und habe im Moment sehr wenig Erfahrung mit Code. Ich habe deinen Blog gefunden und es hat geholfen. – Sandmaster

+0

Während dies größtenteils zutrifft, verwende ich UI-Tests für das Snapshot der Benutzeroberfläche und das Abrufen der visuellen Signatur, so dass die Reihenfolge von ihnen immer noch wichtig für mich ist. –

5

XC-Tests sind unglaublich fehleranfällig. Manchmal scheint es, als würde die Richtung des Windes oder die Geschwindigkeit der Erdrotation bestimmen, ob ein zufälliges Versagen auftritt oder nicht. Ein Fix Ich fand, dass etwas mildert diese frustrierende Probleme sind, wenn Sie nennen dies ist Ihre tearDown() Funktion:

XCUIApplication().terminate() 

Wo XCUIApplication() ist die Anwendung, die Sie ausführen.

+2

"Unglaublich" ist eine Untertreibung – CommaToast

+0

Ich habe darüber gelacht, aber dann habe ich geweint))) weil meine Tests nicht inkonsistent ausfallen, so kann ich es auch nicht richtig debuggen, da es Zeit braucht, sogar das Fehlschlagen zu reproduzieren ..... f % # k –

Verwandte Themen