iOS开发那些事--编写OCUnit测试方法-应用测试方法
来源:互联网 发布:销售公司数据流程图 编辑:程序博客网 时间:2024/06/05 17:48
应用测试方法
应用测试是测试应用程序的一些功能,这个功能具体到点击一个按钮触发一个事件,因此它主要是测试表示层。我们看看视图控制器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代码:
- @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
我们在setUp方法中需要初始化viewController属性,viewController代表的是一个视图控制器,它是iOS系统通过故事板文件创建,而不能简单的通过下面的语句实例化:
self.viewController = [[ViewController alloc] init];
我 们可以通过应用程序委托对象AppDelegate获得window对象,每个window对象可以使用属性rootViewController取得它的一个根视图控制器,本例中的根视图控制器是UINavigationController,而不是ViewController,所以我们还需要使用 UINavigationController的topViewController属性取得ViewController对象。
应用测试类AppllicationTest.m中的测试方法代码:
- #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技术顾问”博客,请务必保留此出处http://2009315319.blog.51cto.com/701759/1123447
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- iOS开发那些事--OCUnit测试框架
- iOS开发那些事--OCUnit测试框架
- OCUnit异步测试
- iOS推送测试方法
- 编写测试执行最好方法
- Java测试方法编写注意
- 编写测试类与方法
- 测试用例编写方法
- [ios] xcode 4.2 创建 adhoc 发布应用测试方法
- [ios] xcode 4.2 创建 adhoc 发布应用测试方法
- ios:制作 AdHoc 发布应用测试版的方法
- Android应用测试方法总结
- Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,Completion
- Flex访问SQL Server数据库的方法
- 关于java中JDialog的阻塞设置问题
- Codeforces Round #245 (Div. 1) A /(Div.2 C) Xor-tree
- 四次挥手
- iOS开发那些事--编写OCUnit测试方法-应用测试方法
- 使用JdbcTemplate 向ORACLE插入大文本CLOB数据的方法
- iOS下的unit test——OCUnit
- ZenGl中文字体渲染解决方案。
- iOS开发那些事--编写OCUnit测试方法-逻辑测试方法
- zoj2397 Tian Ji -- The Horse Racing 贪心
- 如何使用<Beginning ASP.NET 3.5 in C# and VB>书中的示例代码
- Dedecms 5.7sp1文章模型栏目接口使用手册
- javaEE Tomcat server.xml详解