简单介绍
本文主要是讲 XCTest 的使用
我们知道在程序的开发中,单元测试是相当的重要,废话不多说,直接动手吧。
- 我们在创建 Xcode 项目的时候全部勾选的话默认会创建
XCTestDemoTests
XCTestDemoUITests
这 2 个模块。现在主要讲解XCTestDemoTests
的使用。其中的模板代码如下:
1 | // 每次测试前调用,可以在测试之前创建在test case方法中需要用到的一些对象等 |
- XCTAssert 的使用,在单元测试中,我们通常使用 XCTAssert 相关的方法,方法有如下:
1 | // 通用断言,为 true 就通过测试 |
- 我们可以使用
❀ + U 来启动全部单元测试
❀ + 6 切换到测试模块 这个和 Xcode 的版本有关
或者使用下图的方法来启动测试:
- 如何写测试用例呢?
比如我们在开发框架的时候,一般会写一些测试用例。下面我们就模拟写一个简单的框架,同时我们写一些测试用例。如:我们要写一个获取 URL 中的参数的方法。
代码如下:
1 | #import <Foundation/Foundation.h> |
1 | #import "NSString+BMURLParams.h" |
- 我们在 XCTestDemoTests 文件中,实现导入
#import "NSString+BMURLParams.h"
同时加上如下的方法:
1 | - (void)test_URLParams { |
- 跑一下测试用例,发现如下的效果
说明我们的用例全部通过了,当然这里的用例比较少,我们可以加上各种可能的情况。现在我们把获取参数的代码故意写错为如下的代码:
1 | #import "NSString+BMURLParams.h" |
在跑一下单元测试就会有如下的效果:
性能测试
现在我们模拟测试网络接口的返回速度是否复合我们的预期,实现我们创建应该发送网络请求的类
BMRequestManager
, 代码如下:
1 | @interface BMRequestManager : NSObject |
1 | @implementation BMRequestManager |
- 我们编写测试用例代码:
1 | - (void)testExampleRequest { |
由于我们上面设置的预期时间是 15 秒,但我们实际我们 6 秒就获取到了数据,使用我们在跑用例的时候用如下效果:
如果我们设置的预期时间是 5 秒,代码如下:
1 | - (void)testExampleRequest { |
- 跑用例的时候有如下效果:
说明用例不通过。
- 当然我们也可以测试其他的一些代码的执行时间和预期时间来比较,看代码是否通过预期时间。