2016-07-13 6 views
0

Mit Xcode UI Testing möchte ich Code implementieren, der ausgeführt wird, wenn ein bestimmtes UI-Element in der App vorhanden ist. Meine App hat einen eingeloggten Status und ich möchte den Benutzer abmelden, wenn er gerade angemeldet ist. Ich konnte keine Dokumentation finden, die einen Ausweg aus dieser Papiertüte vorschlägt.Xcode-UI-Test: Bedingter Test ausführen

Alles, was ich gelesen habe, zeigt zwei mögliche Wege: mit XCTAssert (das wäre meinen Test führt sofort zum Scheitern verurteilt, wenn das Element nicht vorhanden war) und mit XCTExpectation (was meinen Test zu Zeit führen würde, wenn das Element weren‘ t Gegenwart). Ich brauche eine einfachere Möglichkeit, anderen Code auszuführen, wenn sich die App in einem bestimmten Status befindet.

Um es in Code zu setzen, ich bin für so etwas wie folgt aussehen:

if let signOutElement = app.collectionViews.staticTexts["Sign Out"] { 
    signOutElement.tap() 
} 

Ach, das funktioniert nicht.

+1

Meiner Erfahrung nach werden Tests in der Regel mit einem ziemlich starren Geisteszustand durchgeführt - Sie versetzen die App in den gewünschten Zustand, damit Sie bestimmte Teile des Codes testen können. In diesem Fall sollten Sie wissen, dass sich der Benutzer in einem eingeloggten Zustand befindet und somit abgemeldet werden muss. Sie könnten dies theoretisch mit einer Art Timer auf der Seite erreichen, die öfters abfeuert und nach einem Abmelden sucht, aber wiederum nicht etwas, was Sie unbedingt durch Test-Imo tun müssten. –

Antwort

5

Es ist nichts falsch daran, während des Tests eine Bedingung zu verwenden. Das Problem mit Ihrem Code ist, dass es von einem Swift Standpunkt aus Unsinn ist; if let ist hier bedeutungslos, da Ihr Ausdruck kein Optional zurückgibt. Sie müssen schließlich immer noch Swift verhandeln.

Warum nicht so etwas versuchen?

+0

Ich erkannte auch, dass es eine Existenzmethode für XCUIElement gibt. Danke für die Antwort! –

+0

Akzeptiere meine Antwort nicht, wenn es nicht stimmt! Ich bin mir nicht sicher, ob "count" hier funktioniert. Korrigiere meinen Code, damit es funktioniert, bitte !!!! – matt

+0

Huch, wenn du so stark fühlst! –