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:方法应用测试用例
我们看看应用测试类AppllicationTest.h代码:
#import SenTestingKit/SenTestingKit.h #import “AppDelegate.h” #import “ViewController.h” @interface AppllicationTest : SenTestCase @property (nonatomic, strong) ViewController *viewController;
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宏断言。
StoreKit:iOS应用内推广其他App 在iOS应用中,要推广其他App有两种途径,一种是直接跳转到AppStore软件的对应App商品页,还有一种是在当前应用内内嵌一个App商品页。相比第一种方式,第二种方式的体验更好,并且不会打断用户对当前应用的使用。
uniapp打包ios应用的证书获取方法和上架流程 uniapp目前支持多端开发,可以开发H5网页,也可以开发小程序应用,还可以开发APP。假如需要开发ios app,则需要一个打包的证书和证书profile文件,还需要将这个打包好的APP上架app store。uniapp官网的例子中,生成证书和上架都需要使用mac电脑,而且操作比较复杂,这里我们这篇文章将教会大家无mac电脑生成开发证书和上架的例子。
关东升 国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。
相关文章
- 非官方谷歌地图 iOS 应用遭苹果下架
- Android高配置手机为何没iOS流畅
- Flex AIR应用GPS定位功能(Android和IOS)
- [ IOS ] iOS-控制器View的创建和生命周期
- iOS开发UI篇—ios应用数据存储方式(归档)
- iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
- iOS学习之七牛云存储应用
- Cisco asa 5510升级IOS和ASDM
- iOS定位原理和使用建议(转)
- IOS中KVC与KVO的应用解析
- IOS通过NSUserDefaults实现简单的应用间数据传递
- 关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市
- iOS开发那些事-iOS应用本地化-文本信息本地化
- 《iPhone与iPad开发实战—iOS经典应用剖析》连载三
- 《iPhone与iPad开发实战—iOS经典应用剖析》连载一
- iOS 上下拉刷新 MJRefresh
- ios bounds和frame的区别(bounds的应用)
- ios应用架构1
- h5在iOS上滑动卡顿问题
- Swift开发iOS应用过程中的问题和解决记录
- iOS 运行 Linux 安装应用 iSH shell