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

1

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

onClick:方法应用测试用例

测试用例

输入条件

月收入总额(元)

输出结果

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

说明

1

空白0.00测试不输入直接点击计算按钮

2

8000345.00测试整数

3

8000.59345.12测试小数

4

08000.59345.12测试有前导0数据

5

40000.50.568195.15测试输入两个小数点

6

40000.50..568195.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宏断言。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
NSString类是iOS开发中非常常用的字符串类,其中substringFromIndex、substringWithRange和substringToIndex是NSString类中的三个常用方法,用于截取字符串的一部分。下面分别介绍它们的使用方法。 1. substringFromIndex方法 该方法用于截取字符串从指定位置到字符串结尾的所有字符,返回截取后的字符串。它的方法签名如下: ``` - (NSString *)substringFromIndex:(NSUInteger)from; ``` 其中,from是一个NSUInteger类型的参数,表示要截取的起始位置,从0开始计数。 示例代码: ``` NSString *str = @"Hello World"; NSString *subStr = [str substringFromIndex:6]; NSLog(@"%@", subStr); // 输出:"World" ``` 2. substringWithRange方法 该方法用于截取字符串从指定范围内的所有字符,返回截取后的字符串。它的方法签名如下: ``` - (NSString *)substringWithRange:(NSRange)range; ``` 其中,range是一个NSRange类型的结构体,用来指定要截取的字符串的范围。 示例代码: ``` NSString *str = @"Hello World"; NSRange range = NSMakeRange(6, 5); NSString *subStr = [str substringWithRange:range]; NSLog(@"%@", subStr); // 输出:"World" ``` 3. substringToIndex方法 该方法用于截取字符串从字符串开头到指定位置的所有字符,返回截取后的字符串。它的方法签名如下: ``` - (NSString *)substringToIndex:(NSUInteger)to; ``` 其中,to是一个NSUInteger类型的参数,表示要截取的结束位置,从0开始计数。 示例代码: ``` NSString *str = @"Hello World"; NSString *subStr = [str substringToIndex:5]; NSLog(@"%@", subStr); // 输出:"Hello" ``` 以上就是NSString中substringFromIndex、substringWithRange和substringToIndex方法的使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农老关【关东升】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值