Dot-Net
你用你的單元測試測試什麼?
TDD 似乎是近來每個人都在談論的東西,我自己也嘗試過一些,但我不認為我明白了。我正在掌握如何編寫單元測試,但我不明白我的單元測試應該測試什麼。
- 如果我有一個返回數據列表的操作方法,我應該驗證什麼?只有視圖名稱是正確的,還是我也應該驗證數據?
- 如果我也應該測試數據,我不會寫兩次相同的程式碼嗎?如果我使用相同的方法來檢索要比較的數據,那麼測試數據有什麼用?
- 我也應該測試添加/編輯數據的方法嗎?如何以正確的方式驗證已添加/編輯/刪除記錄?
我知道這是相當多的大問題,但我並沒有通過閱讀網際網路上的文章變得更聰明,因為他們似乎都關心如何測試,而不是關心什麼。
舉個例子——我有(或者,我要寫)一個GuestbookController,帶有查看、添加、編輯和刪除文章的方法。我需要測試什麼?我該怎麼做?
單元測試(UT)!= 測試驅動設計(TDD)
這種混淆似乎相當普遍。UT 是關於程式碼覆蓋率的。TDD 關注特性。它們不是一回事[對不起喬爾!]
使用 UT,您可以編寫任何您想要的程式碼,然後返回並測試每個函式(甚至是一些微不足道的函式)。
使用 TDD,您可以選擇下一個功能並首先為該功能編寫測試。只寫那個特性的測試,測試覆蓋率是無關緊要的。您首先編寫測試以強制預先做出介面決策。然後你編寫程式碼以通過測試(記住“最簡單的可能工作”)。然後根據所學的內容重構程式碼。然後你繼續下一個功能(大概在簽入並重新執行所有單元測試之後)。
如果需要,使用 TDD 進行開發,然後返回並使用 UT 工具完成覆蓋。如果您正在創建類庫或其他 API 供開發人員使用,測試覆蓋率越高越好;-)
如果您只是編寫一個應用程序來做五件特定的事情,那麼僅 TDD 就足夠了。