Đây là một thay thế, XCAsyncTestCase, hoạt động tốt với OCMock nếu bạn cần phải sử dụng nó. Nó dựa trên thử nghiệm không đồng bộ của GHUnit, nhưng thay vì sử dụng khung XCTest thông thường. Hoàn toàn tương thích với Xcode Bots.
https://github.com/iheartradio/xctest-additions
Cách sử dụng là như nhau, chỉ nhập khẩu và lớp con XCAsyncTestCase.
@implementation TestAsync
- (void)testBlockSample
{
[self prepare];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(){
sleep(1.0);
[self notify:kXCTUnitWaitStatusSuccess];
});
// Will wait for 2 seconds before expecting the test to have status success
// Potential statuses are:
// kXCTUnitWaitStatusUnknown, initial status
// kXCTUnitWaitStatusSuccess, indicates a successful callback
// kXCTUnitWaitStatusFailure, indicates a failed callback, e.g login operation failed
// kXCTUnitWaitStatusCancelled, indicates the operation was cancelled
[self waitForStatus:kXCTUnitWaitStatusSuccess timeout:2.0];
}
Nguồn
2013-10-23 14:11:15
thanx ..it thực sự giúp –
Đối với những người không có vấn đề với cách tiếp cận chạy vòng lặp: nó sẽ không hoạt động chính xác: các phương thức 'runMode: beforeDate:' sẽ không trả về cho đến sau khi sự kiện của nguồn được xử lý.Điều đó có thể không bao giờ xảy ra (trừ khi kiểm tra đơn vị thực hiện rõ ràng rằng trong trình xử lý hoàn thành bằng cách nào đó);) – CouchDeveloper
Tôi đã sử dụng kết hợp giải pháp của bạn với Thông báo đã được gọi khi kết thúc phương thức của tôi. Cảm ơn! –