一、为什么需要单元测试
写代码的过程中,我们发现有一些很基础功能的接口,测试在测试过程中很难发现缺陷。假如我们在开发过程中书写好一些用例,不仅能提高代码的质量,也能保证在之后的改动中及时发现改动会带来的错误。
二、选择什么框架来做单元测试
有一些比较出名的第三方的测试框架,如:GHUnit,KiWi
,OCMock
,Specta
等,对比了一下这些框架后,还是选择了苹果自带的XCTest
单元测试框架,原因主要是希望更好适应和Apple之后的更新,也能满足项目需求,也更容易上手。
三、框架集成
苹果在Xcode7(现在已经Xcode11了)中集成了XCTest单元测试框架,我们可以在新建工程的时候直接勾选,如下图1。
上面是函数方法测试,下面是对UI页面的测试。
新建工程后,我们发现工程目录中多了一个单元测试项目名+Tests
的目录文件,我们可以在这里写我们的单元测试,如下图2。
接下来就可以写我们的单元测试了,想测试某个类,可以新建一个该类的测试用例类,继承
XCTestCase
,新建的测试用例类.m类中会有几个默认的方法,加注释简单解释。
@interface PersonalInformationTests :XCTestCase
@end
@implementation PersonalInformationTests
/** 单元测试开始前调用 */
- (void)setUp {
[supersetUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
/** 单元测试结束前调用 */
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
[supertearDown];
}
/** 测试代码可以写到以test开头的方法中 并且test开头的方法左边会生成一个菱形图标,点击即可运行检测当前test方法内的代码 */
- (void)testExample {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
/** 测试性能 */
- (void)testPerformanceExample {
// This is an example of a performance test case.
[selfmeasureBlock:^{
// Put the code you want to measure the time of here.
}];
}
@end