在Xcode 4.6及以前的版本,一直覺得單元測試這部分功能做得很雞肋,用起來感覺很別扭。這一次Xcode 5.0默認就引入了單元測試,趕快來看看看相比以前的版本有什么提升吧!~_~
1. 首先打開上一節示例用的項目,當然,您也可以新建一個空白的項目;
2. 先看一下導航區域的工具欄,相比4.6有哪些變化,如下圖所示:
不難發現,相比Xcode 4.6多了一個Show the Test Navigator(顯示測試導航器)的按鈕;
3. 按command+U運行單元測試……稍等幾秒之后,可以在Issue Navigator(問題導航器)中看到與4.6類似的提示,如下圖所示:
4. 單擊Show the Test Navigator(顯示測試導航器)按鈕,如下圖所示:
5. 在HelloWorldTests.m文件中,@end之前添加以下代碼:
- (void)testExample2 { XCTAssertTrue(1 == 1, @"just a test"); }
6. 按command+U運行單元測試……稍等幾秒之后,可以在Test Navigator中看到以下測試結果:
7. 在導航區域的testExample2上右擊,會顯示輔助菜單,如下圖所示:
在圖中可以看到能夠單獨運行/禁用某一個單元測試~_~。
備注:如果選擇test “testExample2”不難發現,其實testExample和testExample2兩個單元測試都會運行,並且會在問題導航區域中顯示所有測試結果,而在測試導航區域卻只更新testExample2的測試狀態。這一問題相信在未來Xcode的版本中會有所改善。:]
8. 下面演示一下如何對數據模型進行測試,首先在HelloWorld項目中新建一個名為DataModel的類,繼承自NSObject;
9. 首先在導航區域的HelloWorld節點上右擊,然后在輔助菜單中選擇New File…,在彈出的對話框中選擇Objective-C class,然后單擊Next按鈕:
10. 在下一個對話框的Class中輸入:DataModel,並確認Subclass of:中選擇的是NSObject,然后單擊Next按鈕:
11. 單擊並打開DataModel.h,增加一個屬性定義,調整后的代碼如下:
#import <Foundation/Foundation.h> @interface DataModel : NSObject @property (assign, nonatomic) NSInteger myId; @end
12. 單擊並打開DataModel.m,增加init方法,將myId的默認值設置為100,調整后的代碼如下:
#import "DataModel.h" @implementation DataModel - (id)init { if ((self = [super init])) { _myId = 100; } return self; } @end
13. 單擊導航區域工具條中的Show the Test Navigator(顯示測試導航器)按鈕,然后右擊HelloWorldTests,在彈出的輔助菜單中選擇New Test Class…:
14. 在下一個對話框的Class中輸入:DataModelTests,並確認Subclass of:中選擇的是XCTestCase,然后單擊Next按鈕,並直接單擊下一個對話框中Create按鈕:
15. 單擊上圖中的DataModelTests節點,首先引入DataModel的頭文件:
#import "DataModel.h"
16. 刪除testExample方法,然后在@end之前添加以下代碼:
- (void)testModelDefaultId { DataModel *model = [[DataModel alloc]init]; XCTAssertEquals(model.myId, 100, @"The default id should be 100"); }
17. 按command+U運行單元測試……
搞定收工!
有關單元測試的好處,本文就不贅述了哈,相信有過Java或.Net開發經驗的朋友都深有感觸了。進一步了解iOS7中的單元測試,可以參閱蘋果官方文檔。
著作權聲明:本文由http://blog.csdn.net/liufan321或者http://www.cnblogs.com/liufan9原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者博客鏈接,謝謝!