Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 单元测试#ifdef_Objective C_Unit Testing - Fatal编程技术网

Objective c 单元测试#ifdef

Objective c 单元测试#ifdef,objective-c,unit-testing,Objective C,Unit Testing,基于ifdef对行为改变的代码进行单元测试的最佳方法是什么 e、 g 您应该只需要测试发布版本,因为这是用户看到的 要真正回答您的问题:您可以将该方法拆分为3个方法 + (NSString*) someMethod:(NSString*)value { #ifdef DEBUG return [self someMethod_debug:value]; #else return [self someMethod_release:value]; #endif } + (void)

基于ifdef对行为改变的代码进行单元测试的最佳方法是什么

e、 g


您应该只需要测试发布版本,因为这是用户看到的

要真正回答您的问题:您可以将该方法拆分为3个方法

+ (NSString*) someMethod:(NSString*)value {
#ifdef DEBUG
    return [self someMethod_debug:value];
#else
    return [self someMethod_release:value];
#endif
}

+ (void)someMethod_debug:(NSString *)value {
    //Do some stuff ...
    //Tell user about error
}

+ (void)someMethod_release:(NSString *)value {
    //Do some stuff ...
    //Suppress error
}

然后您可以单独测试
someMethod\u debug
someMethod\u release
是否应该将someMethod\u debug包装在ifdef中?您不必这样做。少数冗余方法的开销不大。但是如果您将它包装在
ifdef
中,那么必须使用
DEBUG
标志编译它的单元测试代码
+ (NSString*) someMethod:(NSString*)value {
#ifdef DEBUG
    return [self someMethod_debug:value];
#else
    return [self someMethod_release:value];
#endif
}

+ (void)someMethod_debug:(NSString *)value {
    //Do some stuff ...
    //Tell user about error
}

+ (void)someMethod_release:(NSString *)value {
    //Do some stuff ...
    //Suppress error
}