2013-10-22 71 views
6

我正在使用XCTest測試我的代碼的一部分,它也在主隊列中添加了NSOperations。 它看起來像這樣:在XCTests中使用[NSOperationQueue mainQueue]

[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

請參閱http://stackoverflow.com/questions/12463733/objective-c-unit-testing-dispatch-async-block –

+0

Re;你編輯Kazuki的答案(我看你已經改變了主意)。如果你喜歡你使用該內容添加自己的答案,包括你使用的代碼,爲什麼它的工作等 –

+0

理想情況下,這樣的答案會在答案框中,但不是在問題本身;看到「回答你自己的問題」按鈕 –

回答

相關問題