OCUnit
OCUnit是Xcode 4.x集成的單元測(cè)試框架忧风,OCUnit中的測(cè)試分為兩類,一類稱為Logic Tests融痛,另一類稱為Application Tests壶笼。Logic Tests更傾向于所謂的白盒測(cè)試,用于測(cè)試工程中較細(xì)節(jié)的邏輯雁刷;Application Tests更傾向于黑盒測(cè)試覆劈,或接口測(cè)試,用于測(cè)試直接與用戶交互的接口。
·添加單元測(cè)試
OCUnit是Xcode集成的责语,所以其與工程結(jié)合理應(yīng)是最好的炮障。添加到工程中的成本也理應(yīng)最低。使用XCode創(chuàng)建新工程的流程中就有一個(gè)Include Unit Tests
的選項(xiàng)坤候,新的工程就會(huì)自動(dòng)生成一個(gè)Logic Tests胁赢。
向已經(jīng)存在的工程中添加OCUnit Logic Tests也不復(fù)雜,只需要添加一個(gè)類型為:
Cocoa Touch Unit Testing Bundle
的Target即可白筹。向已有的額工程中添加一個(gè)測(cè)試Target時(shí)智末,XCode會(huì)自動(dòng)生成一個(gè)Scheme,運(yùn)行單元測(cè)試用例和Build原工程需要切換不同的Scheme徒河。如果認(rèn)為切換Scheme非常麻煩系馆,也可在添加Target之前,在
Manage Scheme
菜單中取消Autocreate schemes
顽照。·創(chuàng)建測(cè)試用例
OCUnit的測(cè)試用例最常用的方法有三個(gè)
1.- (void)setUp:每個(gè)test方法執(zhí)行前調(diào)用
2.- (void)tearDown:每個(gè)test方法執(zhí)行后調(diào)用
3.- (void)testXXX:命名為XXX的測(cè)試方法
添加Target之時(shí)XCode已經(jīng)自動(dòng)創(chuàng)建了一個(gè)測(cè)試用例:UITestDemoTests它呀,其中UnitTestDemo是工程的名字,該類中已經(jīng)包含了setUp棒厘,tearDown和testExample三個(gè)方法
通過command+n,選擇Objective-C test case class
創(chuàng)建一個(gè)新的測(cè)試用例下隧。通過Xcode創(chuàng)建的測(cè)試用例類死一個(gè)繼承自SenTestCase(OCUnit由SEN:TE公司開發(fā)奢人,因此基類命名為SenTestCase)的空類,需要模仿UnitTestDemoTests編寫測(cè)試方法淆院。
開發(fā)者可以自己實(shí)現(xiàn)無返回值何乎,且命名規(guī)則為testXXX的實(shí)例方法,并且使用框架提供的大量斷言方法土辩。
LogicTests與Application Tests的區(qū)別主要在setUp方法支救,Logic Tests只需在setUp方法中初始化一些測(cè)試數(shù)據(jù),而Application Tests需要在setUp方法中獲取主應(yīng)用的AppDelegate拷淘,供test方法調(diào)用各墨。
值得注意的是,OCUnit的test bundle是侵入主應(yīng)用的启涯,因此在使用過程中要十分注意贬堵,不要讓單元測(cè)試的資源,造成詭異的Bug结洼。
·運(yùn)行測(cè)試
由于OCunit是集成在Xcode中的框架黎做,因此在Xcode中運(yùn)行也比較方便。切換到單元測(cè)試的scheme(如與工程公用的scheme則無需切換)松忍,Product->Test(或直接使用快捷鍵Command+U)蒸殿,框架會(huì)自動(dòng)查找所有工程中SenTestCase的子類,運(yùn)行其中全部命名類似testXXX的無返回值方法。
·測(cè)試反饋
OCUnit的失敗方法會(huì)通過Console和Xcode Issues兩個(gè)位置反饋宏所,通過Xcode Issues可以直接定位到出現(xiàn)錯(cuò)誤的單元測(cè)試代碼行酥艳。Issue的提示信息就是在單元測(cè)試斷言方法中定義的description。