2013-03-06 49 views
6

我的iOS項目有五個方案:本地開發,集成,質量保證,演示和生產。每種方案都使用不同的配置來控制網絡輪詢頻率,API端點,分析等等。Xcode/iOS:單元測試,方案和配置

同樣,我們有五個相應的目標:本地開發,集成,質量保證,演示和生產。每個目標有幾個用戶定義的生成設置,其包含API的鍵,定時數值等

我們的應用程序的Info.plist文件使用應用程序變量如${SOME_ENDPOINT_URL}在相應的用戶定義的構建設置來繪製。

要檢索的變量,我這樣做如下:

[[[NSBundle mainBundle] infoDictionary] valueForKey:@"Some Endpoint URL"] 

這將對應於用戶定義的構建設置,就像這樣:

"Some Endpoint URL" = ${SOME_ENDPOINT_URL} 

我現在正在考慮如何正確配置項目以執行單元和邏輯測試。

要構建測試以確定環境是否配置正確,我不確定最佳實踐是什麼。

  • 爲每個環境構建五個額外的測試特定目標是否正確?
  • 或者爲每個方案的測試組件覆蓋「Run action's arguments」設置,並提供一些參數來指定我們正在查看的方案?
  • 是否有任何現有的參考用於爲具有多個環境的iOS項目配置單元和邏輯測試?這個項目的複雜性似乎超出了大多數文檔的範圍。
+0

蘋果不斷使整個目標/計劃系統非向後兼容的改變 - 我認爲你沒有找到文檔的原因是,蘋果打算/希望讓更多的這些打算前鋒,並希望躲開他們將會得到的高射炮。有人在蘋果似乎特別討厭目標,所以我會親自去使用「使用參數」的方法 - 目標可能會被nerfed(又:(:)。 – Adam 2013-04-05 20:07:29

+3

而不是有這麼多不同的目標,爲什麼不只有一個目標,以及五種配置,而不是調試和發佈,你可以使用LocalDev,Integ,QA,Demo,Prod,然後你可以創建五個方案來構建相同的目標,但是具有不同的配置 – 2013-06-16 17:45:06

+0

@JacobLukas你知道嗎?我總是避免使用方案,但聽起來他們真的很有用。 – DogCoffee 2013-09-16 22:44:10

回答

1

以下是我所做的。

的Info.plist

  • 創建主Info.plist文件
  • 撰寫運行腳本(Shell腳本)爲每個方案通過在主信息修改設置,以生成特定環境的Info.plist的.plist(使用PlistBuddy -c)
  • 添加運行腳本來構建階段(上面的 「編譯源」)

.h文件中

  • 在.h文件中定義配置設置(例如,每個方案的config.h)在你的代碼

    #if defined (CONFIG_FILE) 
    #import CONFIG_FILE 
    #endif 
    
  • 進口的config.h

  • 使用預處理器宏來選擇目標.h文件中。

    -DCONFIG_FILE=local-env-config.h