如何确定代码是否在单元测试运行期间运行

时间:2013-01-08 16:12:44

标签: iphone objective-c

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

有没有人有任何想法 - 类似于调试?

1 个答案:

答案 0 :(得分: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代码(数据库打开,通知启动等)与我的测试用例发生冲突。