2012-07-20 59 views
1

我需要在自動運行單元測試時禁用日誌記錄,以便可以顯着提高測試速度(大約20s比0.374s,現在只有幾個測試,但是一個大的在測試代​​碼中循環)。如何在單元測試目標c代碼時禁用日誌記錄

我試圖在測試碼標頭中定義的宏,這樣的:

#define UNIT_TESTING 

並且在該代碼被測試,我首先檢查諸如宏被定義:

#ifndef UNIT_TESTING 
NSLog("whatever log"); 
#endif 

但它似乎不工作,我猜如果這是因爲我沒有在測試代碼中導入測試代碼頭。我不能這樣做,因爲即使未進行單元測試,日誌也不會被打印。

我是比較新的目標c和來自Java背景,我想有一些錯誤的頭/宏定義。

還有一個問題,我是否需要爲單元測試定義一個宏,是不是已經有這樣的事情了?

+0

請注意,不是每次測試'UNIT_TESTING'都需要記錄某些東西,您可以有條件地將[variadic macro](http://stackoverflow.com/q/679979/)定義爲'#define MYLOG(.. 。)(NSLog(__ VA_ARGS __))'或'#define MYLOG(...)'。而且,如果您使用日誌記錄打印調試信息,則應該使用交互式調試器;你將會對這個過程有更多的控制,這個問題就會消失。 – outis 2012-07-20 06:19:12

+0

感謝您的提示。 – 2012-07-20 07:03:44

回答

1

您需要在單元測試目標的構建設置中定義UNIT_TESTING

在左窗格中選擇您的項目,然後單元測試目標,然後生成設置 - >所有 - >預處理器宏。

+0

是的,它的作品,謝謝。對於絕對的初學者,可能值得一提的是,您需要先選擇「生成設置」頁面下的「全部」選項卡,以便可以看到預處理器選項。 – 2012-07-20 07:03:05

+0

補充說,答案,謝謝! – Macondo2Seattle 2012-07-20 15:41:08