文档章节

OCUnit单元测试学习

whj
 whj
发布于 2014/03/04 14:53
字数 410
阅读 439
收藏 11

一、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 sharedApplication] delegate];

    

    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");

}

© 著作权归作者所有

共有 人打赏支持
whj

whj

粉丝 20
博文 32
码字总数 6865
作品 0
海淀
私信 提问
iOS开发那些事--编写OCUnit测试方法-逻辑测试方法

应用测试和逻辑测试 添加OCUnit到工程时候,我们提到过,应用测试(Application Testing)和逻辑测试(Logic Testing)两个概念,它们并非是OCUnit中的概念,而是单元测试中概念。应用测试是...

长平狐
2013/03/19
23
0
iOS开发那些事--OCUnit测试框架

使用OCUnit测试框架iOS单元测试框架 原则上,是否使用测试框架都不会影响单元测试结果,但是“工欲善其事,必先利其器”使用单元测试框架更便于我们测试和分析结果。 主要的iOS单元测试框架有...

长平狐
2013/03/19
83
0
OCUnit:在Xcode集成的单元测试

原来的iPhone SDK发布时,它缺乏的单元测试功能。 第三方解决方案进行了调整,或创建,填补了国内空白。 然而,在此期间,与2.2版本的SDK,苹果已经悄悄带回OCUnit单元测试解决方案。 苹果O...

红薯
2011/10/31
3.1K
0
ios单元测试OCUnit 和GHUnit+mock应使用哪一个?

ios单元测试OCUnit 和GHUnit+mock这两个分别有什么好处呢?开发者用哪个更能测试的好呢? 分别有哪些优缺点呢? 现在正在学习,希望得到你的帮助,谢谢!

zplswf
2012/10/11
1K
0
如何用object-c写单元测试?

最近出的bug比较多,然后就被叫去喝茶,最后的结果是我要写一个叫单元测试的东西。 在网上搜了下终于知道单元测试是什么了,也知道Xcode集成了一个叫ocUnit的测试框架,就是那个Tests文件夹 ...

chebaodaren
2015/09/21
103
0

没有更多内容

加载失败,请刷新页面

加载更多

JFinal开发的旅游线路营销Saas平台演示系统我部署了一个

今天部署了一个旅游线路营销管理系统的演示版: 演示地址:http://lvyou.jfinalxueyuan.com 演示账号:(暂时只给一个门店版的吧,批发商和总部的如果需要 演示看看 单独联系我微信:1876673...

山东-小木
今天
2
0
如何学习大数据技术

学习大数据技术,首先要明确大数据的概念。 大数据的概念作者认为有如下几点: 1.数据的来源多样性。例如关系数据库+文本+excel等 2.数据量大。TB级别的数据。 3.业务应用领域。实时性高与实...

董黎明
今天
3
0
开箱即用(out-of-box)的Redis序列号生成器,不用再写任何代码,你值得拥有

先看整体效果 把简单的东西“傻瓜化”是软件开发追求的目标之一。请看下图: 左边是在 application.yml 里配置了3个生成器,右边可以直接注入到代码中使用,注意,不用写任何代码。这酸爽。 ...

花漾年华
今天
1
0
算法我也不知道有没有下一个---一个题目的开端(索引堆与图)

病痛了一周,折磨来折磨去,终于还是平静了下来,现在能把上周末"贯穿"学到的最后一个基础数据结构的知识给沉淀沉淀了。也是即将再单位分享的东西:图论。这东西,想当年大二,学校的时候,只...

心中的理想乡
今天
1
0
Synchronized和Lock的区别

锁类型: 可重入锁:在执行对象中所有的同步方法时,不必再次去获取锁 可中断锁:在等待获取锁过程中可中断 读写锁:对线程的读写分为两个部分,读过程中多线程可一起访问readLock,写过程中...

最胖的瘦子
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部