2017-03-03 7 views
0

Ich habe eine Reihe von Logikeinheitstests (wobei meine Projektdateien eine Zielmitgliedschaft der App und AppTests haben). Ich möchte einen Aufruf von xcodebuild test-ohne-bauen zu meinem Build-System hinzufügen, so dass meine Komponententests für jeden Build ausgeführt werden.Ausführen von Xcode-Unit-Tests während der Build-Erstellung

Die Tests können jedoch nicht mit dem Release-Build ausgeführt werden (da das Release nicht zum Testen erstellt wird).

Ist meine einzige Wahl, um die Release-Version und die Debug-Version während meiner Erstellung zu erstellen, so dass ich die Debug-Version nur für die Tests verwenden kann? Das ist sehr anders und sehr viel schlechter als bei den anderen Test-Frameworks, die ich verwendet habe (GTest, Catch). Warum können die Tests nicht alleine stehen?

Antwort

2

Der Befehl test-without-building ist eigentlich nicht dazu gedacht, "die Tests ohne Neuaufbau der App auszuführen", sondern soll zusammen mit dem Befehl build-for-testing verwendet werden.

Weitere Informationen finden Sie unter "Advanced Testing and Continuous Integration" WWDC 2016 session.

Das Wesentliche ist: Verwenden Sie build-for-testing, um eine .xctestrun Datei zu erstellen, die dann von test-without-building verwendet wird, um die Tests auszuführen. Dies ist besonders nützlich, um große Suites auf verschiedenen Rechnern zu betreiben, obwohl ich das nie selbst gemacht habe.

Jetzt, da wir festgestellt haben, dass Sie nicht test-without-building auf eigene verwenden können, ist die einzige Option, um den Test von der Kommandozeile ausgeführt werden, und wenn sie passieren bauen eine Release Version verwenden xcodebuild test ist, die die aufbauen wird App

Wie für das warum muss es in Debug sein, habe ich keine genaue Antwort. In iOS Land, zumindest in den Teams mit denen ich gearbeitet habe, ist der Unterschied zwischen Debug und Release Builds immer nur auf Dinge wie die Optionen an den Compiler im Hinblick auf die Optimierung, die Architekturen zu bauen, und die Art der Code-Signierung.

Dies bedeutet, dass der Code, der in Debug vs Release läuft, genau das gleiche ist, und da wir bereits festgestellt, dass Sie die App zweimal erstellen müssen, um die Tests zu generieren, eine, die freigegebene Version zu generieren die Tests in Debug scheint akzeptabel.

Verwandte Themen