好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

iOS开发那些事编写OCUnit测试方法应用测试方法

iOS开发那些事编写OCUnit测试方法应用测试方法

应用测试方法

应用测试是测试应用程序的一些功能,这个功能具体到点击一个按钮触发一个事件,因此它主要是测试表示层。我们看看视图控制器ViewController.m中有那些方法需要测试,然后再来设计测试用例。

?

@implementation ViewController

 

- ( void )viewDidLoad

 

{

 

[super viewDidLoad];

 

}

 

- ( void )didReceiveMemoryWarning

 

{

 

[super didReceiveMemoryWarning];

 

}

 

- (IBAction)onClick:(id)sender {

 

//关闭键盘

 

[self.txtRevenue resignFirstResponder];

 

self.lblTax.text =[self calculate:self.txtRevenue.text];

 

}

 

//计算个人所得税

 

-(NSString*) calculate:(NSString*)revenue {

 

… …

 

}

 

@end

viewDidLoad 和didReceiveMemoryWarning是否需要测试,要看我们是否这个方法中有一些自己编写的代码,就目前而言我们不需要测试它们。 onClick:是响应用户点击计算按钮的方法,它需要测试。calculate:方法是业务逻辑方法,我们在逻辑测试中测试过了,是否需要再测试呢?一 般情况下应该只在逻辑测试就可以了,但是如果该方法需要外部环境(依赖其它类或需要特殊运行环境等),逻辑测试无法提供则需要应用测试,这是应用测试能够 在设备上运行,它能够提供一个实际的、真实的测试环境。

下面我们实现onClick:方法的应用测试,我们要模拟点击按钮事件处理,它的输入条件通过文本框控件输入的,输出结果是通过标签控件展示的。设计测试用例选取常见值和边界值作为输入值,文本框的键盘限制为数字键盘。

输入验证不需要考虑太多,只需要考虑空情况,我们设计了6个用例。

onClick:方法应用测试用例

测试用例

输入条件

月收入总额(元)

输出结果

月应纳个人所得税税额(元)

说明

空白 0.00 测试不输入直接点击计算按钮 8000 345.00 测试整数 8000.59 345.12 测试小数 08000.59 345.12 测试有前导0数据 40000.50.56 8195.15 测试输入两个小数点 40000.50..56 8195.15 测试连在一起两个小数点

我们看看应用测试类AppllicationTest.h代码:

?

#import <SenTestingKit/SenTestingKit.h>

 

#import “AppDelegate.h”

 

#import “ViewController.h”

 

@ interface   AppllicationTest : SenTestCase

 

@property (nonatomic, strong) ViewController *viewController;

 

   

 

@end

 

应用测试类AppllicationTest.m中的setUp和tearDown方法代码:

 

- ( void )setUp

 

{

 

[super setUp];

 

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate ];

 

UIWindow *window = [appDelegate window];

 

UINavigationController *navController = (UINavigationController*)window.rootViewController;

 

self.viewController  = (ViewController*)navController.topViewController;

 

}

 

- ( void )tearDown

 

{

 

self.viewController = nil;

 

[super tearDown];

 

}

我们在setUp方法中需要初始化viewController属性,viewController代表的是一个视图控制器,它是iOS系统通过故事板文件创建,而不能简单的通过下面的语句实例化:

self.viewController  = [[ViewController alloc] init];

我 们可以通过应用程序委托对象AppDelegate获得window对象,每个window对象可以使用属性rootViewController取得它 的一个根视图控制器,本例中的根视图控制器是UINavigationController,而不是ViewController,所以我们还需要使用 UINavigationController的topViewController属性取得ViewController对象。

应用测试类AppllicationTest.m中的测试方法代码:

 //  测试不输入直接点击计算按钮 

- ( void  )testOnClickInputBlank

{

STAssertNotNil(self.viewController, @”ViewController没有赋值。”);

  //  设定输入值 
 
self.viewController.txtRevenue.text  = @” "  ; 

 //  调用oncClick测试 
 
[self.viewController onClick:nil];

  //  取得输出结果 
 
NSString * strTax =  self.viewController.lblTax.text;

  //  断言 
 
STAssertEqualObjects(strTax, @”  0.00 ″, @”期望值是: 0.00  实际值是:% @”, strTax);

}

  //  测试整数 

- ( void  )testOnClickInputIntegerNumber

{

STAssertNotNil(self.viewController, @”ViewController没有赋值。”);

  //  设定输入值 
 
self.viewController.txtRevenue.text  = @” 8000  ″;

  //  调用oncClick测试 
 
[self.viewController onClick:nil];

  //  取得输出结果 
 
NSString * strTax =  self.viewController.lblTax.text;

  //  断言 
 
STAssertEqualObjects(strTax, @”  345.00 ″, @”期望值是: 345.00  实际值是:% @”, strTax);

}

  //  测试小数 

- ( void  )testOnClickInputOneDot

{

STAssertNotNil(self.viewController, @”ViewController没有赋值。”);

  //  设定输入值 
 
self.viewController.txtRevenue.text  = @” 8000.59  ″;

  //  调用oncClick测试 
 
[self.viewController onClick:nil];

  //  取得输出结果 
 
NSString * strTax =  self.viewController.lblTax.text;

  //  断言 
 
STAssertEqualObjects(strTax, @”  345.12 ″, @”期望值是: 345.12  实际值是:% @”, strTax);

}

  //  测试输入两个小数点 

- ( void  )testOnClickInputTwoDot

{

STAssertNotNil(self.viewController, @”ViewController没有赋值。”);

  //  设定输入值 
 
self.viewController.txtRevenue.text  = @” 40000.50 . 56  ″;

  //  调用oncClick测试 
 
[self.viewController onClick:nil];

  //  取得输出结果 
 
NSString * strTax =  self.viewController.lblTax.text;

  //  断言 
 
STAssertEqualObjects(strTax, @”  8195.15 ″, @”期望值是: 8195.15  实际值是:% @”, strTax);

}

  //  测试有前导0数据 

- ( void  )testOnClickInputPrefixZero

{

STAssertNotNil(self.viewController, @”ViewController没有赋值。”);

  //  设定输入值 
 
self.viewController.txtRevenue.text  = @” 08000.59  ″;

  //  调用oncClick测试 
 
[self.viewController onClick:nil];

  //  取得输出结果 
 
NSString * strTax =  self.viewController.lblTax.text;

  //  断言 
 
STAssertEqualObjects(strTax, @”  345.12 ″, @”期望值是: 345.12  实际值是:% @”, strTax);

}

  //  测试连在一起两个小数点 

- ( void  )testOnClickInputLinkDot

{

STAssertNotNil(self.viewController, @”ViewController没有赋值。”);

  //  设定输入值 
 
self.viewController.txtRevenue.text  = @” 40000.50 .. 56  ″;

  //  调用oncClick测试 
 
[self.viewController onClick:nil];

  //  取得输出结果 
 
NSString * strTax =  self.viewController.lblTax.text;

  //  断言 
 
STAssertEqualObjects(strTax, @”  8195.15 ″, @”期望值是: 8195.15  实际值是:% @”, strTax);

} 

这 些测试方法都是非常类似的,首先需要使用STAssertNotNil宏判断一下self.viewController是否为nil,然后 self.viewController.txtRevenue.text设置文本框值,真正运行的时候我们是通过文本框控件输入的。语句 [self.viewController onClick:nil]是测试核心目的,参数是按钮对象指针onClick:中没有使用,传递nil就可以了。输出结果的取得是从lblTax标签控件 中取得的。最后使用STAssertEqualObjects宏断言。

 

 

 

标签:  iOS6 ,  iOS测试 ,  iOS测试框架 ,  OCUnit

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于iOS开发那些事编写OCUnit测试方法应用测试方法的详细内容...

  阅读:45次