OCUnit單元測試學習
一、OCUnit概述
添加OCUnit到工程中有兩種方法,一種是在創建工程時添加,勾選“include Unit Tests”;另一種是在現有工程中添加“Cocoa Touch Unit Testing Bundle”Target來實現。詳細添加過程略。
一個完整的測試類組成像下圖:
框架會自動查找所有工程中SenTestCase的子類,運行其中全部命名類似testXXX的無返回值方法。
setUp方法是初始化方法,tearDown方法是釋放資源的方法,setUp和tearDown方法在每次調用測試方法之前和之后調用,因此在測試類運行的生命周期中這兩個方法可能多次運行。如下所示:
二、代碼示例
ZYViewController.h: @property (weak, nonatomic) IBOutlet UITextField *textField; ZYViewController.m: - (int)doubleValue:(int)value{ return value * 2; } |
1、簡單測試實例方法(單個測試用例);
- (void)testDoubleValue{ ZYViewController* viewController = [[ZYViewController alloc] init]; int value = 1; int expect = value*2; int doubleValue = [self.viewController doubleValue:value]; XCTAssertTrue(expect == doubleValue, @"期望值:%d,實際值:%d",expect,doubleValue); |
- (int)getValue{ static int value = 1; value +=1; NSLog(@"test 2 value:%d",value); return value; } - (void)doTest:(int)value expect:(int)expect{ int doubleValue = [self.viewController doubleValue:value]; XCTAssertTrue(expect == doubleValue, @"期望值:%d,實際值:%d",expect,doubleValue); } - (void)testDoubleValue{ for (int count = 0; count < 10; count++) { int value = [self getValue]; [self doTest:value expect:value*2]; } } |
3、測試異步調用(UI操作、網絡等操作);
- (void)testInput{ ZYAppDelegate* delegate = [[UIApplication sharedApplication] delegate]; UIWindow *window = delegate.window; viewController = (ZYViewController*)window.rootViewController; viewController.textField.placeholder = @"請輸入..."; [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10]]; XCTAssertTrue([viewController.textField.text length]>0, @"textField had not input"); } |
posted on 2014-03-14 10:56 順其自然EVO 閱讀(676) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄