2013-01-08 44 views
0

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

有没有人有任何想法必须这样做 - 类似于调试?

+0

我删除了我的答案(它不像@Sulthan所说的那样),但是我想提一下我在其中的注释:这可能不是一件好事,因为您在测试中会有不同的行为。测试代码距离真实代码越近越好。如果可以的话,我会建议找到其他方法(例如通过代码解除弹出对话框)。 – Julien

+0

@Julien我同意。我正在尝试仅针对业务代码和UI自动化使用单元测试。如果业务代码与用户界面正确分离,则工作得很好。 – Sulthan

回答

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代码(DB开放,通知开始等)与我的测试案例相冲突。

+0

@TheLearner Whenewer您正在运行SenTests(OCUnit),必须有'-SenTest'参数,通常使用下一个参数指定'All'或要运行的单个测试用例。 'NSLog'的论点,你会看到我是对的。 – Sulthan

相关问题