2010-02-20 63 views
0

我的同事和我一直在努力單元測試現在幾周。我們試圖設置SenTest,GTM和其他框架,但我們永遠無法擺脫連接錯誤的麻煩。鏈接錯誤設置GTM做iPhone單元測試

這裏是我現在用GTM的地方。我將不勝感激任何指導。

除了幫助SO,如果你有這方面的經驗,我會很樂意付給顧問。如果你認爲你可以幫助我,請發郵件給[email protected]

  1. 我按照說明在這裏: http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting。我發現我還需要將文件「GTMObjC2Runtime.h」添加到項目中。然後,我能夠在安裝完框架後得到預期的控制檯輸出:「執行0次測試,在0.030(0.030)秒內發生0次失敗(0次意外)」

  2. 接下來,我去了爲我的一個類寫一個測試用例。我創建了WebAPITest.h。我創建了一個簡單的測試,效果很好。我剛剛驗證了1 == 1.

  3. 接下來,我決定爲我的AppDelegate.h編寫一個測試。所以,我將#import「AppDelegate.h」添加到WebAPITest.h中,並且有8個鏈接錯誤。我的項目使用FBConnect,並且編譯器抱怨找不到FBConnect文件。爲了解決這個問題,我將FBConnect頭部搜索路徑添加到測試目標的構建配置中,並且鏈接錯誤消失了。

  4. 現在是我難倒的地方。當我嘗試在執行參考AppDelegate中,我得到這些鏈接錯誤:

    建設目標項目「富」的「fooTest」與配置「調試」 - (2個錯誤)

    未定義的符號: 」。 objc_class_name_AppDelegate」,從引用:在WebAPITest.o 字面指針@__ OBJC @__ cls_refs @ AppDelegate中 LD:符號(S)沒有發現 collect2:LD返回1退出狀態

  5. 所以,我嘗試添加AppDelegate中的測試目標,但它然後 開始想要所有的AppDelegate的依賴關係也是如此,我是 猜測我不應該向單元測試 目標添加幾十個文件。

任何想法接下來我需要做什麼?

回答

0

您的測試包確實需要訪問您試圖測試的編譯類。通過將其直接添加到目標(以及是,包含所有依賴項),通過鏈接到實現該類的庫,或者通過設置測試包以使其由主機應用程序加載來實現該目標是您的決定有一個類的實現。在蘋果

http://developer.apple.com/iphone/library/documentation/Xcode/Conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html#//apple_ref/doc/uid/TP40007959-CH20-SW3

而且還從主單元測試文檔:

這種提法可能對你有用

http://developer.apple.com/mac/library/DOCUMENTATION/DeveloperTools/Conceptual/UnitTesting/1-Articles/CreatingTests.html#//apple_ref/doc/uid/TP40002171

查找類似「測試主機」和術語「捆綁裝載機」。

這個東西不是非常直接的理解,但文檔最終澄清了一切,如果你沉浸於它並犁過它。