应用测试方法
应用测试是测试应用程序的一些功能,这个功能具体到点击一个按钮触发一个事件,因此它主要是测试表示层。我们看看视图控制器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:方法应用测试用例
测试用例 |
输入条件 月收入总额(元) |
输出结果 月应纳个人所得税税额(元) |
说明 |
1 |
空白 | 0.00 | 测试不输入直接点击计算按钮 |
2 |
8000 | 345.00 | 测试整数 |
3 |
8000.59 | 345.12 | 测试小数 |
4 |
08000.59 | 345.12 | 测试有前导0数据 |
5 |
40000.50.56 | 8195.15 | 测试输入两个小数点 |
6 |
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宏断言。
相关推荐
iOS开发------Widget(Today Extension)插件化开发1
资源名称:iOS开发视频教程资源目录:【】iOS开发视频教程-第01讲-iOS历史介绍【】iOS开发视频教程-第02讲-XCode安装【】iOS开发视频教程-第03讲-UIView_PPT【】iOS开发视频教程-第04讲-UILabel【】iOS开发视频教程-...
iOS应用开发攻略--文字版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
iOS开发进阶篇-成为iOS开发高手-源码
iOS开发进阶篇-成为一个iOS开发高手(PDF)
ARKit,iOS11之后引入全新的框架,允许开发者轻松地为 iPhone 和 iPad 创建 与伦比 的增强现实体验。通过将虚拟对象和虚拟信息同 户周围的环境相互融合,ARKit 使得应用跳出屏幕的限制,让它们能够以全新的方式与...
之前遇到的需求,ios上没有类似的实现。搞了好久在网上搜了很多资料都不能解决最后找到了一个c/c++的底层源码,才实现了最后整理了下上传了。是个ios的demo很详细你定能看懂的。运行在xcode环境下,关键算法的文件是...
苹果中文版iOS应用开发指南-2012.12.5版.pdf
iOS开发之Objective-C语法快速参考(PDF文档).
location-cleaned 定位ios15.0 最新驱动-iOS专用
资源名称:iOS应用开发之Objective-C视频讲解(全套) 资源目录: 【】1.ios预科班_oc_helloword以及数据类型 【】2.ios预科班_oc_数据类型转换以及类方法变量属性 【】3.ios预科班_oc_内存...
苹果开发- iOS-邓白氏-编码申请
OCUnit单元测试学习,例子在ocunit的自带的模块中(ios7 是自带的ocunit测试)
iOS常用加密方法(aes、md5、base64)
资源名称:iPhone开发入门到精通视频教程资源目录:【】iOS开发源码系列---工具【】iOS开发源码系列---应用【】iOS开发源码系列---游戏【】iOS开发源码系列---类库与框架【】iOS开发真机测试与发布【】iOS开发视频...
iOS 开发框架 EasyIOS-Swift ,EasyIOS 开源至今已经1周年,全新Swift版本今日发布,支持利用HTML来开发IOS应用,支...
网易公开课--斯坦福大学公开课:iOS 7应用开发-源码,源自网络
iOS语音开发libopencore-amrwb和libopencore-amrnb最新适用库,该版本支持x86_64、i386、armv7、armv7s、arm64cpu架构 使用方法:拖入项目 方便自己下载,想用各位老铁也下吧
IOS软件开发-Objective-C-UI高级应用.ppt
思科 cisco ios 镜像 C3640-JK.BIN 文件由多位CCIE水平人员测试使用后拷贝,dy下可用