• 熱門專題

iOS開發之OCUnit測試框架

作者:tony_guan  發布日期:2013-01-19 09:13:57
Tag標簽:iOS開發  OCUnit測試框架  
  • 使用OCUnit測試框架iOS單元測試框架

    原則上,是否使用測試框架都不會影響單元測試結果,但是“工欲善其事,必先利其器”使用單元測試框架更便于我們測試和分析結果。

    主要的iOS單元測試框架有:

    OCUnit,是開源測試框架,與Xcode工具集成在一起使用非常方便,測試報告以文本形式輸出到輸出窗口;

    GHUnit,是開源測試框架,它可以將測試報告以應用形式可視化輸出到設備或模擬器上,也可以以文本形式輸出到輸出窗口;GHUnit可以測試OCUnit編寫的測試用例;

    OCMock,是開源測試框架,它主要為測試提供Mock對象(偽對象)。

    添加OCUnit到工程

    添加OCUnit到工程中有兩種方法,一種是在創建工程時添加,勾選“include Unit Tests”;另一種是在現有工程中添加“Cocoa Touch Unit Testing Bundle”Target來實現。下面我們詳細介紹這兩種添加過程。

    1、創建工程時候勾選“include Unit Tests”

    該種方式添加的單元測試屬于應用測試(Application Testing)。在創建一個工程時,如果采用“Single View Application”模板,在選項中勾選“include Unit Tests”即可在工程中添加OCUnit框架。

    1

    工程創建完,在導航面板中會多一個PITaxTests組(<工程名>Tests),包含PITaxTests測試類。在右邊的Target欄中多了一個PITaxTests Target。

    2

    但是打開Scheme列表還只有一個PITax,這是我們需要注意的。運行它可以通過:選擇菜單Product→Test或工具欄中Test按鈕(下拉Run按鈕選擇)或快捷鍵command+U等幾種方式。

    如果打開Frameworks組會發現添加了SenTestingKit。framework,SenTestingKit。framework就 是OCUnit框架。因為單元測試框架一般命名為xUnit,如Java的單元測試框架是JUnit,。NET單元測試框架是NUnit等,OCUnit 是Objective-C單元測試框架之意。

    2、現有工程中添加Target實現

    該種方式添加的單元測試,屬于邏輯測試(Logic Testing)。在一個現有工程中,選擇菜單File→New→Target…,選擇模板iOS→Other中的 “Cocoa Touch Unit Testing Bundle”。

    3

    點擊Next按鈕,在Product Name項目中輸入LogicTest,創建完成后,在導航面板中多出了一個LogicTest組,包含LogicTest測試類。在右邊的Target欄中多了一個LogicTest Target。

    4

    與上一種添加方式不同的是,在Scheme列表中會添加一個LogicTest,這也是我們需要注意的,這也是應用單元測試和邏輯單元測試的另一個 不同之處。運行它需要選擇Scheme中LogicTest的iPhone 6。0 Simulator(或iPad 6。0 Simulator)運行,但是不能選擇iOS Device,邏輯單元測試只能在模擬器中運行。然后再選擇菜單Product→Test、工具欄中Test按鈕(下拉Run按鈕選擇)和快捷鍵 command+U等幾種方式運行。

    無論那種方式添加,默認生成的測試類基本都是一樣的,下面代碼是默認生成的LogicTest測試類中的LogicTest.h和LogicTest.m文件。


    // 
    //  LogicTest.h 
    //  LogicTest 
    // 
    #import <SenTestingKit/SenTestingKit.h> 
    @interface LogicTest : SenTestCase  
    @end 
    // 
    //  LogicTest.m 
    //  LogicTest 
    // 
    #import “LogicTest.h” 
    @implementation LogicTest 
    - (void)setUp 
    { 
    [super setUp];  
    // Set-up code here. 
    } 
    - (void)tearDown 
    { 
    // Tear-down code here. 
    [super tearDown]; 
    } 
    - (void)testExample 
    { 
    STFail(@”Unit tests are not implemented yet in LogicTest”); 
    } 
    @end 
    
    

    作為OCUnit測試類需要引入<SenTestingKit/SenTestingKit。h>頭文件,并繼承 SenTestCase父類。testExample方法是一般的測試方法,方法名必須test開頭,測試方法的個數沒有限制,方法中STFail是 OCUnit框架定義的一個宏,是無條件斷言失敗,實際使用時候要修改這個方法中的代碼。 www。it165。net

    在m文件中需要重新方法setUp和tearDown,我們自己編寫的測試類一樣,setUp方法是初始化方法,tearDown方法是釋放資源的 方法,setUp和tearDown方法在每次調用測試方法之前和之后調用,因此在測試類運行的生命周期中這兩個方法可能多次運行,它們的時序圖

    5


About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
2019真实网赚2019年最新网赚方法山东十一运夺金开奖结果网赚项目下载全民彩票百万彩票网赚大巴山东群英会怎么玩小红象什么是网赚竞技