Ios 在XCTests中使用[NSOperationQueue mainQueue]
我正在使用XCTest测试代码的一部分,XCTest还将在主队列上添加NSO操作。 看起来是这样的:Ios 在XCTests中使用[NSOperationQueue mainQueue],ios,objective-c,xcode5,nsoperationqueue,xctest,Ios,Objective C,Xcode5,Nsoperationqueue,Xctest,我正在使用XCTest测试代码的一部分,XCTest还将在主队列上添加NSO操作。 看起来是这样的: [NSOperationQueue mainQueue]添加操作锁:^{ //这里发生了一些代码 }]; 代码在设备上或模拟器中运行应用程序时运行,但在运行单元测试时根本不运行(我无法到达块的第一行上的调试点) 电话: [NSOperationQueue mainQueue]等待所有操作完成] 也没用 有什么建议吗?我想我缺少一些初始化队列的代码 *编辑* 感谢您的回答,我添加了完整的结果代码:
[NSOperationQueue mainQueue]添加操作锁:^{
//这里发生了一些代码
}];代码>
代码在设备上或模拟器中运行应用程序时运行,但在运行单元测试时根本不运行(我无法到达块的第一行上的调试点)
电话:
[NSOperationQueue mainQueue]等待所有操作完成]代码>
也没用
有什么建议吗?我想我缺少一些初始化队列的代码
*编辑*
感谢您的回答,我添加了完整的结果代码:
// 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保证是非并发的,所以添加的最后一个操作将是最后一个执行的操作-这样您甚至不必更改代码来停止测试循环。与
此外,它也很有帮助。请参阅Re;你对Kazuki答案的编辑(我看到你改变了主意)。如果您喜欢使用该内容添加您自己的答案,包括您使用的代码,为什么它会起作用等等。然而,这样的答案会放在答案框中,而不是问题本身;请参见“回答您自己的问题”按钮