如果编码作为单元测试的一部分运行,我需要某种 if 语句来忽略某些代码位,例如弹出对话框。
有谁知道必须这样做 - 类似于调试?
我更喜欢运行时解决方案,而不是基于预处理器的解决方案:
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 代码(数据库打开、通知启动等)与我的测试用例发生冲突。