iOS单元测试UnitTest简单使用

简介

单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块的最小单位来进行正确性检验的测试工作。
在开发中我们没必要为了测试某个小模块去编译我们的程序,然后去等待模拟器启动,在进入你需要验证的模块去。假如你的项目很大,编译等老半天,你的电脑没那么快,这个步骤下来非常浪费时间。而使用单元测试能节约我们的时间,提高开发效率,对于越大的项目效果越明显。

注意点:

 1.单元测试是以代码测试代码
 2.红灯/绿灯迭代开发
 3.在日常开发中,数据大部分来自于网络,很难出现所以得‘边界数据’!,如果没有测试所以条件就上架就有可能会造成闪退
 4.可以自己创建使用的例子数据,来专门检查边界
 5.单元测试不是靠NSLog来测试的,NSLog是程序员测试的笨方法,使用‘断言’来测试的,提前预判条件必须满足!

提示:
 1.不是所有的方法都需要测试
例如:私有方法不需要测试,只有暴露在.h的方法需要测试!面向对象有一个原则:开闭原则
 2.所有跟UI有关的都不需要测试,也不好测试
MVVM,把小的业务逻辑代码封装处理,变成可以测试的代码,让程序更加健壮
 3.一般而言,代码的覆盖度大概在50%~70%

使用

创建工程

对新项目创建


iOS单元测试UnitTest简单使用_第1张图片
3E17F908-865D-41BB-A57F-3E9671BF1E8C.png

对于老项目创建
在Xcode导航中选择File-->new-->target-->iOS-->iOS Unit Testing Bundle

iOS单元测试UnitTest简单使用_第2张图片
3B500F1A-5BB0-4F38-B342-67B70570763E.png
创建测试类

新建一个实体Person类和一个测试类PersonTexts

iOS单元测试UnitTest简单使用_第3张图片
8247908F-AADE-48CC-8E48-37E9963B5632.png
iOS单元测试UnitTest简单使用_第4张图片
E904C866-D4D0-452C-ADDA-0A46BA10FEDD.png

iOS单元测试UnitTest简单使用_第5张图片
D0C26F5C-57CA-46F9-AA49-1ADB1BEC5FE3.png
测试类系统提供方法介绍
iOS单元测试UnitTest简单使用_第6张图片
457BE767-4B1D-4955-A157-72608197DF60.png
iOS单元测试UnitTest简单使用_第7张图片
0D70F499-DE3A-4A7B-8D31-1E546CFEA322.png
使用介绍

测试Person模型


iOS单元测试UnitTest简单使用_第8张图片
58B070D3-0C90-471E-9BCB-6EFDAD484B65.png
iOS单元测试UnitTest简单使用_第9张图片
28B9C580-F1AD-4AE3-A500-5CF30AA6CC76.png

新建testNewPerson方法,注意单元测试都是以test开头

iOS单元测试UnitTest简单使用_第10张图片
3795BE0A-2122-4B64-B217-2D62DF861824.png

点击箭头指向的方法运行测试,绿灯代码通过红灯代表错误不通过。

iOS单元测试UnitTest简单使用_第11张图片
7F9BE3FE-B342-4034-A14E-858ED1AA0BBD.png
iOS单元测试UnitTest简单使用_第12张图片
ABB630EF-2AE6-40C6-802E-CA3872D35369.png

其它的断言测试

XCTFail(format…)  //生成一个失败的测试;
XCTAssertNil(a1, format...)  //为空判断,a1为空时通过,反之不通过;
XCTAssertNotNil(a1, format…) //不为空判断,a1不为空时通过,反之不通过;
XCTAssert(expression, format...) //当expression求值为TRUE时通过;
XCTAssertTrue(expression, format...) //当expression求值为TRUE时通过;
XCTAssertFalse(expression, format...)  //当expression求值为False时通过;
XCTAssertEqualObjects(a1, a2, format...)  //判断相等,[a1 isEqual:a2]值为TRUE时通过,其中一个不为空时,不通过;
XCTAssertNotEqualObjects(a1, a2, format...)  //判断不等,[a1 isEqual:a2]值为False时通过;
XCTAssertEqual(a1, a2, format...)  //判断相等(当a1和a2是 C语言标量、结构体或联合体时使用,实际测试发现NSString也可以);
XCTAssertNotEqual(a1, a2, format...)  //判断不等(当a1和a2是 C语言标量、结构体或联合体时使用);
XCTAssertEqualWithAccuracy(a1, a2, accuracy, format...)  //判断相等,(double或float类型)提供一个误差范围,当在误差范围(+/-accuracy)以内相等时通过测试;
XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format...)   //判断不等,(double或float类型)提供一个误差范围,当在误差范围以内不等时通过测试;
XCTAssertThrows(expression, format...)  //异常测试,当expression发生异常时通过;反之不通过;
XCTAssertThrowsSpecific(expression, specificException, format...)  //异常测试,当expression发生specificException异常时通过;反之发生其他异常或不发生异常均不通过;
XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format...)  //异常测试,当expression发生具体异常、具体异常名称的异常时通过测试,反之不通过;
XCTAssertNoThrow(expression, format…)  //异常测试,当expression没有发生异常时通过测试;
XCTAssertNoThrowSpecific(expression, specificException, format...)  //异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过;
XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format...)  //异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过。

你可能感兴趣的:(iOS单元测试UnitTest简单使用)