qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

OCUnit单元测试学习

一、OCUnit概述
  添加OCUnit到工程中有两种方法,一种是在创建工程时添加,勾选“include Unit Tests”;另一种是在现有工程中添加“Cocoa Touch Unit Testing Bundle”Target来实现。详细添加过程略。
  测试方法的方法名必须test开头,测试方法的个数没有限制。
  一个完整的测试类组成像下图:
  框架会自动查找所有工程中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);
2、循环测试实例方法(多个测试用例);
- (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 阅读(671) 评论(0)  编辑  收藏 所属分类: 测试学习专栏


只有注册用户登录后才能发表评论。


网站导航:
 
<2014年3月>
2324252627281
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜