zoukankan      html  css  js  c++  java
  • 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

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

     
     
     
  • 相关阅读:
    BZOJ1049 [HAOI2006]数字序列0
    UOJ265 【NOIP2016】愤怒的小鸟
    #include <deque>
    #include <queue>
    #include <vector>
    #include <set>
    #include <map>
    BZOJ1217:[HNOI2003]消防局的设立
    浅谈贪心
    CF1060B:Maximum Sum of Digits
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2870546.html
Copyright © 2011-2022 走看看