2009-12-14 61 views
10

我試圖在OCUnit和Google工具箱之間進行選擇,您是否有任何偏好,會推薦一個或另一個,爲什麼? 我會聽到任何的2單元測試和TDD,OCUnit與Google工具箱

主要的問題我已經與他們兩個您的經驗很感興趣,是崩潰的測試方法(例如:BAD ACCESS)的同治 他們都不是能告訴我在什麼課上發生了事故!

與谷歌工具盒,我可以看到它的測試套件正在運行,但沒有測試的情況下(怎麼是你應該做的,當你的測試套件有50個測試用例?)

用的OCUnit我至少可以看到什麼樣的測試案例在什麼樣的測試套件中導致了崩潰

以下是消息的種類我有GTB:

Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds 

Test Suite 'LogicTests' started at 2009-12-14 18:03:15 +0100 

/Users/admin/Documents/Tests/GTBTest/RunIPhoneUnitTest.sh: line 122: 688 Segmentation fault  "$TARGET_BUILD_DIR/$EXECUTABLE_PATH" -RegisterForSystemEvents 

Command /bin/sh failed with exit code 139 

我可以看到,這是它的測試套件「LogicTests」發起的碰撞,但僅此而已。

用的OCUnit這裏是同樣的錯誤消息:

Test Suite 'LogicTests' started at 2009-12-14 17:51:26 +0100 
Test Case '-[LogicTests testFail]' started. 
/Developer/Tools/RunPlatformUnitTests.include: line 415: 536 Segmentation fault  "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}" 

至少具有的OCUnit我可以跟蹤哪些測試案例是正在運行,並最終對其進行調試(但是這可能需要花費很長的時間,沒有任何班級和行號信息...)

你如何處理這些問題?

在此先感謝。

PS:這裏是如何重現該問題,這是非常簡單的:

只需創建一個類與崩潰時,這就是所謂的(這發生在你正在做TDD的全部時間)的方法:

- (void) crashMethod { 
NSMutableArray *crashArray; 
[crashArray addObject:[NSObject new]]; 
} 

,然後創建調用此方法測試案例:

- (void) testFail { 
    ClassToTest *test = [[ClassToTest alloc] init]; 
[test crashMethod]; 
[test release]; 
} 

由於提前, 文森特

回答

3

我想我會去GTB無論如何..

隨着xCode 3.2 OCUnit錯誤和警告沒有顯示在代碼中。 似乎這是一個知道的問題: lhttp://osdir.com/ml/xcode-users/2009-10/msg00216.html

與GTB它工作正常。 我無法相信它,但似乎GTB更好地集成了更新版本的xCode比OCUnit ....

調試單元測試不需要任何東西,它從一開始就工作得很好。 (和Xcode你需要一堆的設置: http://chanson.livejournal.com/119578.html

隨着GTB您可以在設備上運行測試,你有UI測試工具(看來你可以創建一個假的UIView層次結構,然後將其與你有什麼比較)我對UI自動測試(昂貴且難以維護)持懷疑態度,但這是一個很好的功能!

http://code.google.com/p/google-toolbox-for-mac/wiki/CodeVerificationAndUnitTesting

+0

@ user142764:你怎麼跟GTB然後調試單元測試?當然你還需要一個自定義可執行文件? – jkp 2010-02-13 10:56:28

+0

GTB沒有那麼好:因爲你使用普通的目標來運行你的測試,你可以調試它! 只需編寫一個測試,在其中放置一個斷點,然後從菜單執行Run-> Debug,它就是:您正在逐步調試您的測試。 – user142764 2010-03-02 16:00:52

0

BTW的谷歌工具箱現在打印測試情況下開始的情況下,任何人的消息不知道;-)