C 宏,用于在 iOS 中编写异步操作单元测试。支持 SenTestingKit 和 XCTest。
使用 Cocoapods 安装 AGAsyncTestHelper
或 AGAsyncTestHelper/Shorthand
- (void)testDoSomeOperation
{
__block BOOL jobDone = NO;
[Manager doSomeOperationOnDone:^(id data) {
jobDone = YES;
}];
WAIT_WHILE(!jobDone, 2.0);
}
WAIT_WHILE()
将在 !jobDone
为 TRUE
时阻塞当前 runloop,并在超过时间限制(2.0秒)时抛出 XCTFail()
。
- (void)testDoSomeOperation
{
[Manager doSomeOperationOnDoneTellTarget:self selector:@selector(someOperationDone)];
WAIT_WHILE(!self.jobDone, 2.0);
}
- (void)someOperationDone
{
self.jobDone = YES;
}
WAIT_WHILE()
将在 !self.jobDone
为 TRUE
时阻塞当前 runloop,并在超过时间限制(2.0秒)时抛出 XCTFail()
或 STFail()
。
当条件为真或达到时间限制时,宏将对表达式进行评估。
如果达到时间限制,这些宏将生成 XCTFail()
或 STFail()
。
WAIT_WHILE(expressionIsTrue, seconds, ...)
WAIT_WHILE_EQUALS(value1, value2, limitInSeconds, ...)
WAIT_WHILE_EQUALS_WITH_ACCURACY(value1, value2, accuracy, limitInSeconds, ...)
WAIT_WHILE_NOT_EQUALS(value1, value2, limitInSeconds, ...)
AG_STALL_RUNLOPP_WHILE(expressionIsTrue, limitInSeconds)
您有几种替代方案,如
如果您还有其他应该列入此处的替代方案,请让我知道。
Stack Overflow 上还有一个关于iOS测试的极好论坛 http://stackoverflow.com/questions/4114083/ios-tests-specs-tdd-bdd-and-integration-acceptance-testing
此库或包允许您在 SenTestCase 中使用异步回调执行异步测试操作。与 GCD (Grand Central Dispatch) 和常规委托回调一起工作。