3 Stimmen

Automatisierte Tests und Xcode-Konfigurationsdatei zum Festlegen des API-Ziels

Ich schreibe also automatisierte Tests, die von der Kommandozeile aus laufen, um die Benutzeroberfläche meiner iOS-Anwendung zu testen. Ich habe das Bash-Skript arbeiten, die bereinigt und baut das Projekt und führt meine UI automatisierte Tests.

Das Problem ist, dass ich möchte, dass das Befehlszeilenskript in der Lage ist, ein C-Flag in meinem Xcode-Projekt zu ändern, das festlegt, auf welchen Server ich für meine Anwendung verwiesen werde. Zum Beispiel:

./run-test -target "Debug-Server"

ändert dabei den Wert des C-Flags SERVER_ADDRESS in DEBUG_SERVER:

./run-test -target "QA-Server"

ändert den Wert des C-Flags SERVER_ADDRESS auf QA_SERVER

Um dies zu tun, habe ich vor, eine .xcconfig-Datei zu erstellen, die in xcodebuild eingespeist wird und die C-Flags in meinem Code so setzt, dass sie auf den richtigen Server verweisen. Etwas wie dies:

xcodebuild -target <TARGET_NAME> -configuration Debug-QA.xcconfig -sdk "$DEVICE_SLUG""$CURRENT_SDK" DSTROOT=. clean build

Ich bin mit den .xcconfig-Dateien überhaupt nicht vertraut und habe daher einige Fragen dazu.

  1. Muss ich jede Build-Einstellung in meiner .xcconfig-Datei zu beschreiben? Oder gibt es eine Art von "Standard" Wert, der Xcode verwendet?
  2. Gibt es eine bessere Möglichkeit, dies zu tun?

3voto

Endama Punkte 753

Ich habe es herausgefunden, indem ich eine Kombination aus .xcconfig und #ifdef-Anweisungen verwendet habe:

In der Konfigurationsdatei, in der ich den Server deklariere:

#ifdef USE_DEV
#define SERVER_ADDRESS   DEV_SERVER_ADDRESS   //USED IN AUTOMATED TESTING DEBUG SERVERS

#elif defined USE_QA
#define SERVER_ADDRESS   QA_ADDRESSS          //USED IN AUTOMATED TESTING STAGING SERVERS 

#elif defined USE_LIVE
#define SERVER_ADDRESS   LIVE_SERVER_ADDRESS  //USED IN AUTOMATED TESTING LIVE SERVERS

#else
#define SERVER_ADDRESS   DEV_SERVER_ADDRESS   //DEFAULT VALUES
#endif

Ich habe dann drei .xcconfig-Dateien verwendet, in denen Folgendes steht:

dev.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_DEV

QA.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_QA

LIVE.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_LIVE

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X