標籤:
在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原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝!
iOS7初體驗(2)——單元測試