我们经常说模块拆分与封装可以降低耦合,而低耦合的业务逻辑能够方便单元测试,那么什么在iOS开发中我们怎样进行单元测试呢?首先我们需要了解单元测试的概念
单元测试
单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块的最小单位来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法
TestDemoTests与TestDemoUITests
在iOS开发中,Xcode已经集成单元测试的功能,当我们新建文件的时候,除了项目文件夹之外还会有TestDemoTests
与TestDemoUITests
两个文件夹,这两个文件夹包含的内容分别为方法测试与UI测试
打开其中的TestDemoTests
文件夹,点开TestDemoTests.m
类,会有以下四个方法:
测试
要进行测试,我们需要有被测试的方法,这里我们新建一个类ValidManager
,里面包含有判断输入是否为手机号的方法
我们测试这个方法就需要在TestDemoTests
创建测试类(也可以使用初始的模板),这个类继承于XCTestCase:
然后导入需要测试的类,进行初始化,添加测试方法testMobile
,注意所有的方法都需要以test
开头,表明这是一个测试的方法,然后添加需要的断言进行测试,因为是BOOL
类型的判断,我们添加测试成功的断言XCTAssertTrue
可以进行测试的方法,左边都会有一个菱形按钮,需要测试时我们只需要点击菱形测试按钮即可,当我们需要测试的方法通过的时候,左边的菱形会变成绿色的对号,测试成功,如图:
这里可以看到,我们的测试已经成功,如果测试失败,左边则会出现红色差号,并提示那个方法没有测试通过
如果我们需要对一个方法进行时间的测试,则需要在testPerformanceExample
方法measureBlock
块中,添加需要测试的方法即可
可以看到验证手机号的方法,使用了0.001秒,我们可以点开左边灰色菱形按钮
这里是测试时间的一些参数,点击Edit可以修改BaseLine
时间基线与MAX STDDEV
最大浮动,当我们测试时间的时间,在BaseLine
的MAX STDDEV
范围内时,测试才会有效