Dot-Net

你用你的單元測試測試什麼?

  • February 5, 2009

TDD 似乎是近來每個人都在談論的東西,我自己也嘗試過一些,但我不認為我明白了。我正在掌握如何編寫單元測試,但我不明白我的單元測試應該測試什麼。

  1. 如果我有一個返回數據列表的操作方法,我應該驗證什麼?只有視圖名稱是正確的,還是我也應該驗證數據?
  2. 如果我也應該測試數據,我不會寫兩次相同的程式碼嗎?如果我使用相同的方法來檢索要比較的數據,那麼測試數據有什麼用?
  3. 我也應該測試添加/編輯數據的方法嗎?如何以正確的方式驗證已添加/編輯/刪除記錄?

我知道這是相當多的大問題,但我並沒有通過閱讀網際網路上的文章變得更聰明,因為他們似乎都關心如何測試,而不是關心什麼

舉個例子——我有(或者,我要寫)一個GuestbookController,帶有查看、添加、編輯和刪除文章的方法。我需要測試什麼?我該怎麼做?

單元測試(UT)!= 測試驅動設計(TDD)

這種混淆似乎相當普遍。UT 是關於程式碼覆蓋率的。TDD 關注特性。它們不是一回事[對不起喬爾!]

使用 UT,您可以編寫任何您想要的程式碼,然後返回並測試每個函式(甚至是一些微不足道的函式)。

使用 TDD,您可以選擇下一個功能並首先為該功能編寫測試。只寫那個特性的測試,測試覆蓋率是無關緊要的。您首先編寫測試以強制預先做出介面決策。然後你編寫程式碼以通過測試(記住“最簡單的可能工作”)。然後根據所學的內容重構程式碼。然後你繼續下一個功能(大概在簽入並重新執行所有單元測試之後)。

如果需要,使用 TDD 進行開發,然後返回並使用 UT 工具完成覆蓋。如果您正在創建類庫或其他 API 供開發人員使用,測試覆蓋率越高越好;-)

如果您只是編寫一個應用程序來做五件特定的事情,那麼僅 TDD 就足夠了。

引用自:https://stackoverflow.com/questions/517977