如果在那裏有任何邏輯,它可以進行單元測試。
如果您的邏輯涉及決策並調用操作系統/硬件/系統API,假設/模擬出與設備相關的調用,並對您的邏輯進行單元測試,以驗證在給定的前置條件下是否做出正確決策。在單元測試中遵循Arrange-Act-Assert三元組。
斷言不能替代自動化單元測試。他們不會告訴你哪個方案失敗,他們在開發過程中不提供反饋,他們不能用來證明代碼在其他方面符合所有規範。
非模糊更新: 我不知道確切的方法調用..我想我會「推出自己的」 比方說,你的代碼審視了當前的條件下,作出決定,並向電話OS根據需要。比方說,你的OS電話是(可能有更多):
void* AllocateMemory(int size);
bool FreeMemory(void* handle);
int MemoryAvailable();
首先把它變成一個接口,I_OS_MemoryFacade
。創建此接口的實現,以實際調用OS。現在讓你的代碼使用這個接口 - 你現在已經從設備/操作系統中解耦了你的代碼/邏輯。接下來在你的單元測試中,你使用一個模擬框架(它的目的是給你一個指定接口的模擬實現,然後你可以告訴模擬框架期望這些調用,這些參數並返回這個時候在測試結束時,您可以要求模擬框架驗證是否滿足所有期望(例如,在此測試中,應以10,30,50作爲參數,隨後3次FreeMemory調用將AllocateMemory調用三次。檢查MemoryAvailable是否返回初始值。)
因爲你的代碼依賴於一個接口,所以它不知道真正的實現和你用於測試的虛擬/模擬實現之間的區別 Google out'mock frameworks'欲瞭解更多信息,請點擊這裏
您能否介紹一下如何編寫單元測試的更多細節。你提倡他們很多,但我讀了這個問題,然後回答了你的答案,我仍然不明白你提出的是什麼。 – 2008-09-23 07:08:50