C/ObjC:如何对单元进行单元测试?

kak*_*kyo 1 unit-testing block objective-c

根据这个Stackoverflow帖子:Objective-C库中的回调选择器或块,

块似乎是ObjC的未来.然而,就像匿名函数一样,块感觉更像是"起草"一个实现.此外,由于其"嵌入式"性质,我担心过度使用它们会破坏单元测试或"可测试"OOP意义上的模块化.

我找不到关于如何测试块以及如何协调块和常规方法的测试的指南.这个主题有很好的资源吗?

Rap*_*ira 17

我创建了3个等待块在单元测试中执行的宏,因此可以在块内部进行断言.

#define TestNeedsToWaitForBlock() __block BOOL blockFinished = NO
#define BlockFinished() blockFinished = YES
#define WaitForBlock() while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, true) && !blockFinished)
Run Code Online (Sandbox Code Playgroud)

例:

- (void)testWaitForBlock {
    TestNeedsToWaitForBlock();

    [target selectorWithInlineBlock:^(id obj) {

        // assertions

        BlockFinished();
    }];

    WaitForBlock();
}
Run Code Online (Sandbox Code Playgroud)