TDD規則

Michael FeathersArtima自己的Blog2005-9-9發表了一篇A Set of Unit Testing Rules的文章,提出瞭如下的代碼不是單元測試:

1.        訪問數據庫It talks to the database

2.        訪問網絡It communicates across the network

3.        訪問文件系統It touches the file system

4.        不能和其他的單元測試代碼同時運行It can't run at the same time as any of your other unit tests

5.        做特殊的事情運行測試的代碼You have to do special things to your environment (such as editing config files) to run it.

使用一句話概括就是:把你的單元測試代碼的邏輯和耗時的、與測試邏輯無關的代碼分開;單元測試應該是純粹的單元測試。

單元測試要嚴格遵守這些原則有時候很困難,需要變通的辦法,我的想法是:

1.        測試邏輯概念函數和需要交涉的功能函數分開。如果一個測試邏輯概念函數,需要和文件、網絡、數據庫打交道,那麼儘量的分開它們;

2.        把文件需要的內容以二進制的形式插入到代碼中。這雖然很笨拙,但是消除了對文件的依賴。

3.        建立配置文件。有時候不得已還需要建立配置文件。

4.        使用錯誤的消息輸出。一旦配置文件沒有設定好,通過輸出消息報告給用戶。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章