2016-06-28 8 views
0

Ich möchte auf eine bestimmte Eigenschaft router von der App Delegate der gestarteten App während eines UI-Tests zugreifen, aber ich kann nicht herausfinden, ob dies möglich ist oder nicht. Ich habe versucht:Zugriff auf den App-Delegaten über einen UI-Test?

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
let router = appDelegate.router 

aber dies gibt einen Fehler und wird nicht einmal bauen. Ich verwende @testable auf meinem Projektmodul. Irgendwelche Ideen?

Antwort

4

Xcode-UI-Tests sind so konzipiert, dass der Testcode nur sehen kann, was ein Benutzer sehen kann, sodass keine Objekte aus der zu testenden Anwendung im Testcode verwendet oder untersucht werden können. Aus diesem Grund werden die Ansichten auf dem Bildschirm als XCUIElement-Objekte anstelle von UIView-Nachkommen dargestellt.

Die UI-Tests werden in einer separaten ausführbaren Datei von der zu testenden Anwendung ausgeführt. Die einzige Möglichkeit, zusätzliche Informationen von der App an einen UI-Test zu übermitteln, besteht darin, eine Zeichenfolge zu erstellen, die die Informationen enthält, und sie als Zugriffskennung für ein Element zu verwenden.

Wenn Sie etwas testen möchten, das Zugriff auf ein Objekt aus dem Anwendungscode erfordert, ist es höchstwahrscheinlich, dass Sie einen Komponententest anstelle eines UI-Tests schreiben müssen.