Ich habe versucht, HTTP-Anfragen in automatisierten Xcode 7-UI-Tests abzufangen und zu stempeln, indem ich Tools wie OHHTTPStubs verwendete, ohne Glück.
Hier ist ein Beispiel, wie ich versuche, eine HTTP-Anfrage mit OHHTTPStubs in der setUp-Methode einer UI-Testdatei zu erfassen:
%Vor%Gibt es etwas über die Funktionsweise des UI-Tests, das dies verhindert? hat das jemand geschafft?
Wie Martijn zu Recht betont hat, können Sie zur Laufzeit nicht direkt mit der App interagieren, so dass jede HTTP-Verspottung oder Manipulation von Dingen wie NSUserDefaults
in XCUITestCase
sich nicht auf Ihre App auswirkt / p>
Wenn Sie wirklich in der Lage sein müssen, HTTP oder Setup & amp; Um Ihre Apps-Umgebung für bestimmte UI-Tests zu deaktivieren, müssen Sie Startargumente festlegen oder Umgebungsvariablen starten, bevor Sie die App in der setUp()
-Methode eines XCUITestCase
starten und dann Ihren App-Code ändern, um die Startargumente oder Umgebungsvariablen zu lesen bootstrap die Testumgebung.
Beispiel Testfall
%Vor%Beispiel AppDelegate
%Vor% Hinweis: Um in diesem Beispiel ein HTTP-Mocking-Framework wie OHHTTPStubs
zu verwenden, müssen der Stubbing-Code und alle JSON-Fixtures, die Sie verwenden müssen, nicht in Ihrem App-Ziel sein das Testziel.
Dies ist ein sehr nützlicher Thread zum Thema: Ссылка
UI-Tests werden in einer separaten Instanz von Ihrer Anwendung ausgeführt. Während die Klassen aus der Anwendung möglicherweise für Sie verfügbar sind, sind sie nur eine Kopie.
In Ihrer Anwendung können Sie feststellen, ob Sie im UI-Testmodus mit den folgenden Lösungen arbeiten: Erkennen, ob die iOS-App im UI-Testmodus ausgeführt wird
Ich persönlich ging mit der im ursprünglichen Beitrag erwähnten launchEnvironment
Lösung; Mein Setup sieht so aus:
Und einer meiner Singleton-Instantiatoren (genannt RealmManager
) sieht so aus (zum Instanziieren einer Realm-Datenbank):
Wenn Sie die Duplizierung nicht mögen, aber wahrscheinlich sowieso XCUIApplication().launch()
duplizieren, können Sie immer eine benutzerdefinierte Testfallklasse erstellen, die XCTestCase
erweitert, die setUp dort mit dieser Ergänzung überschreiben und dann diese in allen Ihren verwenden Testklassen.
Tags und Links ios xcode7 xcode-ui-testing