iOS開發中使用OCUnit進行單元測試

最近看了一下單元測試相關的內容,雖然對單元測試,有很多開發人員有不同的意見,但是我覺得單元測試對整個項目和個人的代碼質量提高有很高的促進作用.

單元測試和 TDD開發的解釋網上很全,比如:

https://zh.wikipedia.org/zh/%E6%B5%8B%E8%AF%95%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91

http://baike.baidu.com/link?url=vCJ5aJAi-KxpXQt6zdKkskoegKEemQhCfnsyxSuSerRsRtOk_KNAbfqDkpMFV6NT

關於iOS的單元測試的介紹也有很多.這裏就不摘錄了,可以自己去看一下

http://www.cocoachina.com/applenews/devnews/2013/0724/6667_2.html


OCUnit 分爲功能測試(application test)和邏輯測試(logic test) 主要區別是 功能測試需要在 setup函數獲取 APPDelete 調用視圖資源

下面的內容只是個人參看網上的指導小小實驗了一下iOS中的單元測試,以後在編寫代碼的時候會帶上單元測試.

蘋果官方代碼示例中也有一個Demo, https://developer.apple.com/library/ios/samplecode/UnitTests/Introduction/Intro.htmlD

OCUnit是XCode集成的,所以其與工程的結合理應是最好的,添加到工程中的成本也理應最低。

首先創建工程的時候勾選“Include Unit Tests”的選項, 在Xcode5中就是默認勾選的.


如果爲以創建的工程添加單元測試可以添加一個Target 選擇 cocoa Touch Unit Testing Bundle 創建一個測試Target

 添加完成就是這樣的,




在 UnitTestTests.m 中 默認有三個方法:

- (void)setUp

{

    [super setUp];

    // Put setup code here. This method is called before the invocation of each test method in the class.

}

- (void)tearDown

{

    // Put teardown code here. This method is called after the invocation of each test method in the class.

    [super tearDown];

}

- (void)testExample

{

    XCTFail(@"No implementation for \"%s\"",__PRETTY_FUNCTION__);

}

1. - (void)setUp:每個test方法執行前調用
 
2. - (void)tearDown:每個test方法執行後調用
 
3. - (void)testXXX:命名爲XXX的測試方法
你創建的測試方法必須 以test開頭的無返回值的不帶參數的函數, 系統會自動檢測這樣的方法並執行測試
那系統默認給我們創建了例子,我們就可以照樣子編寫測試用例了. 按照官方單元測試指南的說明:https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/UnitTesting/00-About_Unit_Testing/about.html

在Xcode4中默認創建的測試類是繼承 SenTestCase的子類,SenTestingKit 是Apple 集成的第三方庫 ,我們測試需要創建一個繼承SenTestCase的子類來實現.
在Xcode5中默認創建的測試類是集成XCTestCase的子類,蘋果建議我們使用XCTestCase的子類來實現單元測試.
我們就創建一個簡單的函數測試一下:
創建一個 CaculatorHandle類 然後寫一個簡單的函數:

- (CGFloat)additionWithFirstPar:(CGFloat)firstPar secondPar:(CGFloat)secondPar {

    return (firstPar + secondPar);

}

測試類實現:


然後 commend + U 快捷鍵 運行測試程序.

如果有錯誤就會跳到錯誤位置.

至此,最簡單的單元測試已經可以運行了,更多的項目中的單元測試還需結合功能實現和結構設計來編寫測試用例測試.

有機會我會繼續編寫一些項目中的測試用例.

希望大家都能將單元測試執行起來.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章