【问题标题】:using [NSOperationQueue mainQueue] in XCTests在 XCTests 中使用 [NSOperationQueue mainQueue]
【发布时间】:2013-10-31 15:10:43
【问题描述】:

我正在使用 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 保证是非并发的,因此添加的最后一个操作将是最后一个执行的操作 - 这样您甚至不必更改代码来停止测试循环。

【问题讨论】:

  • 重新;您对 Kazuki 答案的编辑(我看到您已经改变了主意)。如果您喜欢使用该内容添加您自己的答案,包括您使用的代码、其工作原理等
  • 理想情况下,这样的答案会出现在答案框中,而不是问题本身;查看“回答您自己的问题”按钮

标签: ios objective-c xcode5 nsoperationqueue xctest


【解决方案1】:
猜你喜欢
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多