0

如果编码作为单元测试的一部分运行,我需要某种 if 语句来忽略某些代码位,例如弹出对话框。

有谁知道必须这样做 - 类似于调试?

4

1 回答 1

0

我更喜欢运行时解决方案,而不是基于预处理器的解决方案:

int main(int argc, char* argv[]) {
    @autoreleasepool {
        BOOL tests = NO;

        for (int i = 0; i < argc; i++) {
            NSString* argument = [NSString stringWithCString:argv[i] encoding:NSASCIIStringEncoding];

            if ([argument isEqualToString:@"-SenTest"]) {
                tests = YES;
                break;
            }
        }

       if (tests) {
           //save YES to a global variable and use it whenewer you want
       }

       UIApplicationMain(...)

    }
}

我实际上UIApplicationDelegate在运行单元测试时使用它来进行不同的操作,因此没有 UI 代码(数据库打开、通知启动等)与我的测试用例发生冲突。

于 2013-01-08T17:12:26.470 回答