我正在使用XCTest测试我的代码的一部分,该XCTest还在主队列上添加了NSOperations。 它看起来像这样:
[NSOperationQueue mainQueue] addOperationAsBlock:^{
// some code happens here
}];
代码在设备或模拟器上运行时运行,但在运行单元测试时根本不运行(我无法到达块的第一行的调试点)。
致电:
[NSOperationQueue mainQueue] waitUntilAllOperationsAreFinished];
也无济于事。
有什么建议吗?我想我缺少一些初始化队列的代码。
*编辑*
感谢您的回答,我添加了完整的代码:
// add as many operations as you'd like to the mainQueue here
__block BOOL continueCondition = YES;
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
// this should be the last operation
continueCondition = NO;
}];
while (continueCondition) {
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
} // continue your test here
这是有效的,因为mainQueue保证是非并发的,所以最后添加的操作将是最后执行的操作 - 这样你甚至不必更改代码来停止测试循环。
答案 0 :(得分:2)