iOS7初體驗(2)——單元測試


在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”不難發現,其實testExampletestExample2兩個單元測試都會運行,並且會在問題導航區域中顯示所有測試結果,而在測試導航區域卻只更新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原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者博客鏈接,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM