2012-11-29 72 views
2

因此,我正在編寫自動測試,從命令行運行測試我的iOS應用程序的用戶界面。我有bash腳本工作,清理並構建項目並運行我的UI自動化測試。自動測試和Xcode配置文件來指定API目標

問題是,我希望命令行腳本能夠更改我的Xcode項目中的C標誌,該標誌確定了我指向我的應用程序的服務器。例如:

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

將改變C-標誌SERVER_ADDRESS的值DEBUG_SERVER而:

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

改變C標誌SERVER_ADDRESS的值QA_SERVER

爲了做到這個,我打算創建一個.xcconfig文件,該文件被送入xcodebuild,它將設置我的代碼中的C標誌指向正確的服務器。像這樣:

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

我真的不熟悉.xcconfig文件,所以我有幾個關於它們的問題。

  1. 我是否必須在我的.xcconfig文件中描述每個構建設置?還是有某種Xcode使用的「默認」值?
  2. 有沒有更好的方法來做到這一點?

回答

3

我想通了,使用.xcconfig和#ifdef語句的組合:

在配置文件中,我宣告服務器:

#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 

然後我使用了三個.xcconfig文件其說明如下:

dev.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_DEV 

QA.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_QA 

LIVE.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS = USE_LIVE