我理解需要測試具有邏輯的類(例如可以計算折扣的類),您可以在其中測試實際的類。我爲什麼要寫一個假類和單元測試呢?
但是我剛開始爲一個充當存儲庫的項目編寫單元測試(從數據庫獲取對象)。我發現自己正在編寫一個實現了ISomethingRepository
接口的'假'存儲庫。它在內部使用Dictionary<Guid, Something>
進行存儲。它實現接口的Add(Something)
和GetById(Guid)
方法。
我爲什麼要寫這個?我正在編寫的東西實際上會在軟件部署時使用,對吧?我真的不明白這個練習的價值。
我也得到了使用模擬對象的建議,我可以提前設置以滿足某些期望。這對我來說似乎更加毫無意義:當然,測試會成功,我已經嘲笑/僞裝成功!而且我還不能確定實際的軟件會連接到數據庫時,它應該執行...
迷茫...
有人點我在正確的方向,以幫助我理解這?
謝謝!
我對此表示滿意,因爲這經常令我感到厭煩。大多數快速的TDD倡導者傾向於意外陷入這種情況,最終導致測試場景/代碼在現實中不會發生。 – FlySwat 2009-08-30 22:57:38