单元测试、断言

时间:2022-06-12 16:43:35

1.在Xcode 5中新建一个工程默认自带一个单元测试的文件夹,IDE自动生成了一个实现XCTestCase的.m文件,里面有一个失败测试(早期版本中实现的是SenTestCase,是苹果集成的第三方的,现在苹果建议使用新的XCTestCase)。

2.测试函数的要求是:1.必须无返回值;2.以test开头;

3.测试函数执行的顺序:以函数名中test后面的字符大小有关,比如-(void)test001XXX会先于-(void)test002XXX执行;

4.运行单元测试的快捷键:CMD + U;


------------------------------------断言--------------------------------------------

1、无条件报错

XCTFail(...)

生成一个失败的测试;

2、等价测试

XCTAssertEqualObjects(expression1, expression2, ...)

[expression1 isEqual:expression2值为TRUE时通过

expression1和expression1地址相同时通过,否则测试失败。

expression接受id类型的参数。


XCTAssertNotEqualObjects(expression1, expression2, ...)

[expression1 isEqual:expression2值为False时通过

expression1和expression1地址不相同时通过,否则测试失败。

expression接受id类型的参数。


XCTAssertEqual(expression1, expression2, ...)

expression1和expression1相等时通过,否则测试失败。

expression接受基本类型的参数(当a1和a2是 C语言标量、结构体或联合体时使用)。



XCTAssertNotEqual(expression1, expression2, ...)

expression1和expression1不相等时通过,否则测试失败。

expression接受基本类型的参数。


XCTAssertEqualWithAccuracy(expression1, expression2, accuracy, ...)

提供一个误差范围,当在误差范围(+/-accuracy)以内相等时通过测试

expression1和expression2之间的任何值都大于accuracy时,测试失败。

expression1、expression2、accuracy都为基本类型(double,float)。


XCTAssertNotEqualWithAccuracy(expression1, expression2, accuracy, ...) 

提供一个误差范围,当在误差范围(+/-accuracy)以内不相等时通过测试

expression1和expression2之间的任何值都小于等于accuracy时,测试失败。

expression1、expression2、accuracy都为基本类型。


 注意:

      XCTAssertEqualObjects(a1, a2, format...)的判断条件是[a1 isEqual:a2]是否返回一个YES。

XCTAssertEqual(a1, a2, format...)的判断条件是a1 == a2是否返回一个YES。

对于后者,如果a1和a2都是基本数据类型变量,那么只有a1 == a2才会返回YES。


3、Nil(空)测试

XCTAssertNil(expression, ...)

为空判断

expression为空时通过,否则测试失败。

expression接受id类型的参数。


XCTAssertNotNil(expression, ...)

不为空判断

expression不为空时通过,否则测试失败。

expression接受id类型的参数。


4、Boolean测试


XCTAssert(expression, ...)

expression为true时通过,否则测试失败。

expression接受boolean类型的参数。


XCTAssertTrue(expression, ...)

expression为true时通过,否则测试失败。

expression接受boolean类型的参数。


XCTAssertFalse(expression, ...)

expression为false时通过,否则测试失败。

expression接受boolean类型的参数。



5、异常测试

XCTAssertGreaterThan(expression1, expression2, ...)

expression1 <= expression2时,测试失败。

expression为基本类型



XCTAssertGreaterThanOrEqual(expression1, expression2, ...)

expression1 < expression2时,测试失败。

expression为基本类型


XCTAssertLessThan(expression1, expression2, ...)

expression1 >= expression2时,测试失败。

expression为基本类型


XCTAssertLessThanOrEqual(expression1, expression2, ...)

expression1 > expression2时,测试失败。

expression为基本类型


XCTAssertThrows(expression, ...)

当expression发生异常时通过;反之不通过

expression为一个表达式


XCTAssertThrowsSpecific(expression, exception_class, ...)

当expression发生exception_class异常时通过;

expression没抛指定类的异常,测试失败。

expression为一个表达式

exception_class为一个指定类


XCTAssertThrowsSpecificNamed(expression, exception_class, exception_name, ...)

当expression发生具体异常、具体异常名称的异常时通过测试,反之不通过;

expression为一个表达式

exception_class为一个指定类

exception_name为一个指定名字


XCTAssertNoThrow(expression, ...)

当expression没有发生异常时通过测试;

expression为一个表达式


XCTAssertNoThrowSpecific(expression, exception_class, ...)

当expression没有发生exception_class异常时通过;

expression为一个表达式


XCTAssertNoThrowSpecificNamed(expression, exception_class, exception_name, ...)

当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过;

expression为一个表达式

exception_class为一个指定类

exception_name为一个指定名字


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

http://www.cocoachina.com/ios/20140715/9144.html