2016-03-28 7 views
3

Ich möchte einen Test für meine iOS-App schreiben, der den korrekten Bildschirminhalt überprüft, wenn die App über ein benutzerdefiniertes registriertes URL-Schema gestartet wird.XCode-UI-Test mit URL-Startoption starten

Zum Beispiel erhält ein Benutzer eine E-Mail mit einem Link zu myapp://action1/1234. Wenn sie auf diesen Link tippen, wird meine App gestartet und der Bildschirm zeigt "1234" an.

In didFinishLaunchingWithOptions überprüft mein AppDelegate, ob launchOptions?[UIApplicationLaunchOptionsURLKey] existiert und ergreift die entsprechenden Maßnahmen.

Wie schreibe ich einen UI-Test, damit das app launchOptions-Wörterbuch die erwartete URL enthält, wenn die App gestartet wird?

Antwort

1

Sie können dies erreichen, indem Sie launchEnvironment auf XCUIApplication in Kombination mit ein paar Zeilen benutzerdefinierten Codes in Ihrer Zielanwendung nutzen. Im Grunde würden Sie eine benutzerdefinierte Start-Umgebungsvariable für diesen Test festlegen, und in Ihrer Anwendung würden Sie nach dieser Variablen suchen und sie so behandeln, wie Sie das Vorhandensein des bestimmten UIApplicationLaunchOptionsURLKey, das Sie erwarten, behandeln würden.

In Ihrer App können Sie diesen Wert über NSProcessInfo.processInfo.environment überprüfen, die ein Wörterbuch der Umgebungsvariablen zurückgibt.

(Beachten Sie, dass die Standard-XCTestCase Vorlage in Xcode 7 einen Aufruf an XCUIApplication -launch in setup enthält, die alle zuvor ausgeführten Instanz beendet wird, und starten Sie eine neue Instanz standardmäßig aktiviert.)

Edit: wollte fügen Sie hinzu, ich habe ein wenig mehr darüber in einem Artikel auf Xcode 7 UI Testing Tips geschrieben, falls es hilfreich ist.