OCUnit是集成在Xcode开发环境的单元测试框架;OCUnit运行必须包含SenTestingKit.framework这个库;

针对需要测试的类,每个类写出自己的TestCase,独立组织一个文件。每个测试类都是继承自SenTestCase类,这里有3个重要的方法需要介绍:

1. -(void)setUp: 每个test方法执行前调用,用于类的创建,一些变量的初始化等

2. -(void)tearDown:每个test方法执行后调用

3. -(void)testXXX:这个是真正运行的测试方法,命名就是不带参数,以test开始。

这里的每个testXXX方法可以在Scheme里面看到,并可以设置是否测试这个方法

开发者的主要工作是自己实现这些无返回值的testXXX方法,一般框架会提供大量的断言方法,如果还是觉得不够丰富,可以使用第三方的库来进行扩充,比如:OCHamcrest。

OCUnit断言介绍:

1.无条件失败(Unconditional Failure)

STFail
让测试用例失败

STFail(failure_description, ...)
参数
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

2.相等测试(Equality Tests)

STAssertEqualObjects

当两个对象不同时,测试失败
STAssertEqualObjects(object_1, object_2, failure_description, ...)
参数
object_1
    一个对象
object_2
    一个对象

failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

说明:当 [object_1 isEqualTo:object_2] 为false时,测试失败

STAssertEquals

当两个值不等的时候测试失败。
STAssertEquals(value_1, value_2, failure_description, ...)

参数
value_1
                一个数值,结构体,或联合体。
value_2
                一个数值,结构体,或联合体。
failure_description
                指定你错误消息的格式化字符串,可以为nil
...
                (可选)以逗号隔开的替换到failure_description的参数列表
                
说明:当value_1 不等于value_2的时候测试失败。

STAssertEqualsWithAccuracy

当两个值的差别大于给定值时,测试失败
STAssertEqualsWithAccuracy(value_1, value_2, accuracy, failure_description, ...)

参数
value_1
                一个整型或浮点值。
value_2
                一个整型或浮点值。
accuracy
                一个整型或浮点值。
failure_description
                指定你错误消息的格式化字符串,可以为nil
...
                (可选)以逗号隔开的替换到failure_description的参数列表
说明:当value_1和value_2之间相差大于accuracy时,测试失败。

3.空值测试(Nil Tests)

STAssertNil

Fails the test case when a given expression is not nil.
如果给定的表达式不是nil,测试失败。
STAssertNil(expression, failure_description, ...)

参数
expression
                要测试的表达式。
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

STAssertNotNil

Fails the test case when a given expression is nil.
当表达式为nil时,测试失败。
STAssertNotNil(expression, failure_description, ...)

参数
expression
                要测试的表达式。
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

4.布尔测试(Boolean Tests)

STAssertTrue

如果给定表达式为false,测试失败。
STAssertTrue(expression, failure_description, ...)

参数
expression
                要测试的表达式。
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

STAssertFalse

如果给定表达式为true,测试失败。
STAssertFalse(expression, failure_description, ...)

参数
expression
                要测试的表达式。
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

5.异常测试(Exception Tests)

STAssertThrows

当表达式不抛异常时,测试失败
STAssertThrows(expression, failure_description, ...)

参数
expression
                要测试的表达式。
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

STAssertThrowsSpecific

当表达式不能抛出特定类的异常时,测试失败。
STAssertThrowsSpecific(expression, exception_class, failure_description, ...)

参数
expression
                要测试的表达式。
exception_class
    异常类
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

说明:当expression不会抛出exception_class的异常时,测试失败。

STAssertThrowsSpecificNamed

当表达式不能抛出特定类指定名称的异常时,测试失败。
STAssertThrowsSpecificNamed(expression, exception_class, exception_name, failure_description, ...)

参数
expression
                要测试的表达式。
exception_class
    异常类
exception_name
    异常名字的字符串
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

说明:当expression不能抛出exception_class类中的名为exception_name的异常时,测试失败。

STAssertNoThrow

如果表达式抛异常,测试失败。
STAssertNoThrow(expression, failure_description, ...)

参数
expression
    要测试的表达式。
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

STAssertNoThrowSpecific

当表达式抛出特定类的异常时,测试失败。
STAssertNoThrowSpecific(expression, exception_class, failure_description, ...)

参数
expression
                要测试的表达式。
exception_class
    异常类
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

说明:当expression抛出exception_class的异常时,测试失败。

STAssertNoThrowSpecificNamed

当表达式抛出特定类指定名称的异常时,测试失败。
STAssertNoThrowSpecificNamed(expression, exception_class, exception_name, failure_description, ...)

参数
expression
                要测试的表达式。
exception_class
    异常类
exception_name
    异常名字的字符串
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

说明:当expression抛出exception_class类中的名为exception_name的异常时,测试失败。

STAssertTrueNoThrow

当表达式为false或者抛异常时,测试失败。
STAssertTrueNoThrow(expression, failure_description, ...)

参数
expression
    要测试的表达式。
failure_description
    指定你错误消息的格式化字符串,可以为nil
...
    (可选)以逗号隔开的替换到failure_description的参数列表

STAssertFalseNoThrow

当表达式为true或者抛异常时,测试失败。
STAssertFalseNoThrow(expression, failure_description, ...)

参数
expression
    要测试的表达式。
failure_description
    指定你错误消息的格式化字符串,可以为nil

ios专题 - OCUnit的更多相关文章

  1. ios专题 - 常用设计模式

    设计模式:解决编程问题的设计模板 设计模式是一个抽象工具,用于面向对象的软件开发,以及其他领域.它是一个设计模板,在特定背景中,解决一般性的.重复出 现的问题.因此,设计模式是一种针对特定的.具体的设 ...

  2. ios专题 - 委托模式实现

    在ios中,委托模式非常常见,那委托模式是什么? 委托模式是把一个对象把请求给另一个对象处理. 下面见例子: #import <UIKit/UIKit.h> @protocol LQIPe ...

  3. ios专题 -动画

    知识点 : 1)ios 核心动画的基础是图层.图层的基础是CALayer,它是所有核心图层类的父类. 2)CATransaction是核心动画类负责协调多个动画原子显示更新.事务支持嵌套使用. 3)图 ...

  4. ios专题 - 多线程非GCD(1)

    iOS多线程初体验是本文要介绍的内容,iPhone中的线程应用并不是无节制的,官方给出的资料显示iPhone OS下的主线程的堆栈大小是1M,第二个线程开始都是512KB.并且该值不能通过编译器开关或 ...

  5. ios专题 - 斯坦福大学iOS开发公开课总结

    转自:http://blog.devtang.com/blog/2012/02/05/mvc-in-ios-develop/ 前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的”ipho ...

  6. ios专题 - socket(1)

    二,BSD socket API 简介 BSD socket API 和 winsock API 接口大体差不多,下面将列出比较常用的 API: API接口 讲解 int socket(int add ...

  7. ios专题 - APP设计流程

    网上看到这篇文章,觉得基本的flow很有帮助,转过来收藏了:作者:关于Sarah Parmenter英国艾塞克斯(英国英格兰东南部的郡)Youknowwho设计工作室的创始人,Sarah Parmen ...

  8. ios专题 - sandbox机制

    [原创]http://www.cnblogs.com/luoguoqiang1985 ios在安装APP时,把APP的偏好设置与数据放在sandbox里.sandbox通过一系列细颗粒度控制APP访问 ...

  9. ios专题 - 单例模式的实现

    [原创]http://www.cnblogs.com/luoguoqiang1985 单例模式是什么? 一个类只有一个实例. ----------------------- 这样做有什么好处? 在我的 ...

随机推荐

  1. C 语言 ----位运算

    位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作 运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类 ...

  2. ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA

    Centos5.5 安装Oracle11g客户端,配置了本地的net服务后,用sqlplus连接报错: tnsnames.ora配置如下 orcl = (DESCRIPTION = (ADDRESS ...

  3. Ubuntu配置Android编译环境

    1.Ubuntu安装 VMware安装ubuntu之后,安装Vmware tools: 1.安装完ubuntu后,VMware Workstation菜单:虚拟机-->安装 Vmware Too ...

  4. 【转载】zookeeper 分布式锁 实现

      agapple 基于zookeeper的分布式lock实现 博客分类: opensource java distributed   背景 继续上一篇文章:http://agapple.iteye. ...

  5. 【基于spark IM 的二次开发笔记】第二天 树形结构

    MessageTreePlugin.java final MessageTreeTab messageTreeTab = new MessageTreeTab(); /** * Adds a tab  ...

  6. Implement the hash table using array / binary search tree

    今天在复习Arrays and String 时看到一个很有趣的问题.希望跟大家分享一下. Implement the hash table using array / binary search t ...

  7. Maven source jar get

    Maven作为项目管理的包,同时也能方便的将source-jar下载的本地,省去了每次到网上分别下载的问题. Maven下载Jar包同时下载源文件和文档 示例,在maven生成的工程里面:mvn ec ...

  8. 【转】android多分辨率适配

    前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...

  9. C++中this指针的使用方法.

    this指针仅仅能在一个类的成员函数中调用,它表示当前对象的地址.以下是一个样例: void Date::setMonth( int mn ) { month = mn; // 这三句是等价的 thi ...

  10. Velocity源码分析

    velocity模板渲染的步骤: 1) 首先初始化启动Velocity引擎,可以通过Velocity.init()或者新建VelocityEngine类,并调用其中的init()方法: 2) 创建一个 ...