OCUnit
OCUnit是Xcode 4.x集成的單元測試框架,OCUnit中的測試分為兩類,一類稱為Logic Tests,另一類稱為Application Tests。Logic Tests更傾向于所謂的白盒測試,用于測試工程中較細節(jié)的邏輯;Application Tests更傾向于黑盒測試,或接口測試,用于測試直接與用戶交互的接口。
·添加單元測試
OCUnit是Xcode集成的,所以其與工程結合理應是最好的。添加到工程中的成本也理應最低。使用XCode創(chuàng)建新工程的流程中就有一個Include Unit Tests的選項,新的工程就會自動生成一個Logic Tests。

向已經存在的工程中添加OCUnit Logic Tests也不復雜,只需要添加一個類型為:
Cocoa Touch Unit Testing Bundle的Target即可。
向已有的額工程中添加一個測試Target時,XCode會自動生成一個Scheme,運行單元測試用例和Build原工程需要切換不同的Scheme。如果認為切換Scheme非常麻煩,也可在添加Target之前,在
Manage Scheme菜單中取消Autocreate schemes。

·創(chuàng)建測試用例
OCUnit的測試用例最常用的方法有三個
1.- (void)setUp:每個test方法執(zhí)行前調用
2.- (void)tearDown:每個test方法執(zhí)行后調用
3.- (void)testXXX:命名為XXX的測試方法
添加Target之時XCode已經自動創(chuàng)建了一個測試用例:UITestDemoTests,其中UnitTestDemo是工程的名字,該類中已經包含了setUp,tearDown和testExample三個方法
通過command+n,選擇Objective-C test case class創(chuàng)建一個新的測試用例。通過Xcode創(chuàng)建的測試用例類死一個繼承自SenTestCase(OCUnit由SEN:TE公司開發(fā),因此基類命名為SenTestCase)的空類,需要模仿UnitTestDemoTests編寫測試方法。

開發(fā)者可以自己實現(xiàn)無返回值,且命名規(guī)則為testXXX的實例方法,并且使用框架提供的大量斷言方法。
LogicTests與Application Tests的區(qū)別主要在setUp方法,Logic Tests只需在setUp方法中初始化一些測試數(shù)據(jù),而Application Tests需要在setUp方法中獲取主應用的AppDelegate,供test方法調用。
值得注意的是,OCUnit的test bundle是侵入主應用的,因此在使用過程中要十分注意,不要讓單元測試的資源,造成詭異的Bug。
·運行測試
由于OCunit是集成在Xcode中的框架,因此在Xcode中運行也比較方便。切換到單元測試的scheme(如與工程公用的scheme則無需切換),Product->Test(或直接使用快捷鍵Command+U),框架會自動查找所有工程中SenTestCase的子類,運行其中全部命名類似testXXX的無返回值方法。
·測試反饋
OCUnit的失敗方法會通過Console和Xcode Issues兩個位置反饋,通過Xcode Issues可以直接定位到出現(xiàn)錯誤的單元測試代碼行。Issue的提示信息就是在單元測試斷言方法中定義的description。