XCTestAsync 是 XCTest 的异步测试扩展,并基于 SenTestingKitAsync。
目前有两种方法可以将 XCTestAsync 添加到您的项目中:
如果您不使用 CocoaPods,您可以将 XCTestAsync.h
和 XCTestAsync.m
复制到您的测试目标中。此外,您需要将 -ObjC
添加到您的测试目标链接器标志中。
要在测试中使用 XCTestAsync,请执行以下操作:
导入头文件
#import <XCTestAsync/XCTestAsync.h>
添加以 Async
结尾的测试方法
- (void)testMethodAsync { // your async code here }
告诉 XCTestAsync 测试成功
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^{ XCAsyncSuccess(); });
一旦异步测试开始,XCTestAsync 将等待直到发生以下情况之一:测试失败(通过调用如 XCTFail(…)
或 XCTAssert(…)
的断言)或通过调用 XCAsyncSuccess()
发出成功信号。如果这两种情况都没有发生,XCTestAsync 将无限期地等待。
如果您预计异步测试将在指定的时间内运行,您可以通过调用 XCAsyncFailAfter(timeout, description, …)
指定一个时间限制。如果在此时间限制内未发出成功信号,测试将在 timeout
秒数后失败。