2014-01-09 127 views
3

基於ifdef的行爲更改的單元測試代碼的最佳方式是什麼?單元測試#ifdef

例如

+ (NSString*) someMethod:(NSString*)value { 
    //Do some stuff ... 
#ifdef DEBUG 
    //Tell user about error 
#else 
    //Suppress error 
#endif 
} 

回答

1

你應該只需要測試發佈版本,因爲這是用戶看到的。

真正回答你的問題:您可以將方法分成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_debugsomeMethod_release單獨

+0

是否應someMethod_debug也被包裹在一個IFDEF? – Sam

+1

你不需要。少數多餘的方法開銷不大。但如果你將它封裝在'ifdef'中,那麼你的單元測試代碼必須用'DEBUG'標誌編譯 –