zoukankan      html  css  js  c++  java
  • OCUnit单元测试学习

    源码:http://download.csdn.net/detail/chenscda/7253835

    ios7 ocunit是系统自带的,在创建project的时候是没有选项的,创建project的时候是自己默认带上的

    一、OCUnit概述

    添加OCUnit到工程中有两种方法,一种是在创建工程时添加,勾选“include Unit Tests”;另一种是在现有工程中添加“Cocoa Touch Unit Testing Bundle”Target来实现。详细添加过程略。

    测试方法的方法名必须test开头,测试方法的个数没有限制。

    一个完整的测试类组成像下图:

    框架会自动查找所有工程中SenTestCase的子类,运行其中全部命名类似testXXX的无返回值方法。

    setUp方法是初始化方法,tearDown方法是释放资源的方法,setUp和tearDown方法在每次调用测试方法之前和之后调用,因此在测试类运行的生命周期中这两个方法可能多次运行。如下所示:

    5

    --------------------------------------------------------------------------------------------------------------

    二、代码示例

    ZYViewController.h:

    @property (weak, nonatomic) IBOutlet UITextField *textField;

     

    ZYViewController.m:

    - (int)doubleValue:(int)value{

        

        return value * 2;

        

    }

    1、简单测试实例方法(单个测试用例);

    - (void)testDoubleValue{

     

        ZYViewController* viewController = [[ZYViewController alloc] init];

     

        int value = 1;

     

        int expect = value*2;

     

        int doubleValue = [self.viewController doubleValue:value]; 

     

        XCTAssertTrue(expect == doubleValue, @"期望值:%d,实际值:%d",expect,doubleValue);

    }

     

    2、循环测试实例方法(多个测试用例);

    - (int)getValue{

        

        static int value = 1;

        

        value +=1;

        

        NSLog(@"test 2 value:%d",value);

        

        return value;

    }

    - (void)doTest:(int)value expect:(int)expect{

        

        int doubleValue = [self.viewController doubleValue:value];

        

        XCTAssertTrue(expect == doubleValue, @"期望值:%d,实际值:%d",expect,doubleValue);

        

    }

    - (void)testDoubleValue{

        

        for (int count = 0; count < 10; count++) {

            

            int value = [self getValue];

            

            [self doTest:value expect:value*2];

        }

        

    }

    3、测试异步调用(UI操作、网络等操作);

    - (void)testInput{

        

        ZYAppDelegate* delegate = [[UIApplication sharedApplicationdelegate];

        

        UIWindow *window = delegate.window;

        

        viewController = (ZYViewController*)window.rootViewController;

        

        viewController.textField.placeholder = @"请输入...";

        

        [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10]];

        

        XCTAssertTrue([viewController.textField.text length]>0, @"textField had not input");

    }

    zhuan:http://my.oschina.net/w11h22j33/blog/204970

  • 相关阅读:
    docker基础命令
    oracle 控制文件损坏处理
    mongodb 分片技术
    replcation set (复制集)配置过程 --mongodb
    redis API ---python
    MHA 高可用架构部署
    innoback 参数及使用说明
    Windows服务创建及发布
    DevOps 什么是 CI/CD?
    .NETReflectorVisualStudioExtension
  • 原文地址:https://www.cnblogs.com/AbelChen1991/p/3690334.html
Copyright © 2011-2022 走看看