メイン キューに NSOperations も追加する XCTest を使用して、コードの一部をテストしています。次のようになります。
[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 が非並行であることが保証されているため、追加された最後の操作が最後に実行されるためです。この方法では、テスト ループを停止するためにコードを変更する必要さえありません。