iphone - 单元测试 NSOperation?

标签 iphone ios unit-testing nsoperation nsoperationqueue

我想测试一个 NSOperation 子类。我试图在我的 SenTestCase 子类中这样做:

- (void)setUp {
    [super setUp];

    _importQueue = [[NSOperationQueue alloc] init];

    [_importQueue setMaxConcurrentOperationCount:1];
    [_importQueue waitUntilAllOperationsAreFinished];
}

- (void)tearDown {
    [_importQueue release];

    [super tearDown];
}

- (void)testSomeImport {
    ImportOperation *op = [[ImportOperation alloc] initWithFile:...];
    [_importQueue addOperation:op];
    [op setDelegate:self];
    [op release];
}

- (void)opDidFinish:(ImportOperation *)op {     // ImportOperation delegate method
    // Not getting called
}

但测试在 NSOperation 完成执行之前完成,尽管指定了 waitUntilAllOperationsAreFinished

关于如何防止测试在我的操作完成之前完成的任何想法?

最佳答案

您需要在将操作添加到队列后调用 waitUntilAllOperationsAreFinished,而不是在 setUp 中调用。

关于iphone - 单元测试 NSOperation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6653982/

相关文章:

iphone - 媒体查询 : Targeting orientation: landscape without excluding desktop computers

iPhone 应用程序适用于大多数设备,但不是少数

iphone - 如何在 UITableView beginUpdates/endUpdates 上检测到动画已经结束?

ios - 更新到 Xcode 9 后导航栏按钮中的图像不呈现

ruby - 获取ruby单元测试断言错误的 'backtrace'

javascript - 期待这样或那样,如何在单元测试中包含 OR

iPhone - UIView 的背景颜色 - 使用具有透明度的 png?

iphone - UIRefreshControl - 如何在触摸释放后进行刷新操作?

ios - 用于管理对其实例化可能尚未完成的单例的访问的 Objective C 设计模式 (iOS)

使用 GeoDjango + PostGIS 进行 Django 测试