2012-05-16 66 views
6

我有一個帶有用戶界面項目(UI)和核心邏輯項目(Core)的XCode工作空間。我想在UI項目中使用OCUnit單元測試,所以我添加了一個新的測試目標,就像通常所做的那樣。使用靜態庫進行單元測試

我能夠運行測試就好了,直到我在主UI目標中引入了類的導入語句,然後引用Core項目。

我得到的錯誤是「找不到詞法或預處理程序問題'xxx.h'文件」。直接構建主要UI對象時,我不會收到此消息。

這是因爲如果在主UI目標知道核心,當它建成,但是當它被從測試參照目標似乎一無所知核心。

我採用了「使用庫的鏈接二進制文件」添加對核心項目的引用的步驟列表中的項目保持爲紅色。線索?也許,但鏈接列表中的紅色引用不會阻止構建和使用核心類的UI目標。我還將主要目標作爲測試目標的依賴。

回答

9

請務必檢查出蘋果的示例代碼「單元測試」: https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

確保您的圖書館項目在您的OCUnit測試目標的構建階段設置爲扶養,它的鏈接爲一個庫。

在Xcode中打開項目。在文件菜單中,轉到項目設置...(或工作區設置...,如果您正在使用工作區)。單擊高級...並確保選中唯一。清潔和重建。

檢查您的BUILD_PRODUCTS_DIR以查看庫中的標題是否顯示在那裏。如果他們不這樣做,首先檢查構建階段庫中的目標,以確保您需要的標頭是在公共部分(在項目部分也可能有效,但嘗試公共及看看是否能解決您的問題)。

覆蓋最常見的問題的人似乎在您的情況碰上了。如有疑問,請檢查UnitTests示例中針對您的目標設置。祝你好運!

0

在您的測試目標中,轉到Build Settings。將路徑添加到您的靜態庫標題到標題搜索路徑。

2

除了Jon Reid的回答,我還必須執行以下操作: 在您的測試目標中,轉到Build Settings。將「始終搜索用戶路徑」設置爲YES