2011-11-24 60 views
2

如何用asp.net 4.0 Web Forms做TDD/BDD?我有一個規模非常大的現有網站,我們沒有對數據庫中每次更改進行任何測試,我們必須猜測會發生什麼情況?我想介紹單元測試請給我指點?如何用asp.net 4.0 Web Forms做TDD/BDD?

回答

3

很大程度上取決於您現有代碼庫的結構。

將單元測試,特別是TDD改造爲傳統項目可能需要很多工作。通常,您會發現駐留在網頁文件後面的代碼中的數據庫和業務邏輯。

使用接口類型是你的朋友,因爲Visual Studio可以爲你自動生成接口類。 (將光標放在類名上,右鍵單擊,選擇重構和提取界面)

我會努力將您的數據庫代碼分離到它自己的類庫項目中。然後,您可以指定業務邏輯等可以訪問數據庫的公共接口。所有其他代碼應將數據庫存儲庫視爲黑盒子。

創建一個工廠以使您的存儲庫(基於該接口),讓它創建測試類型和活動類型。實時類型將鏈接到您當前的數據庫代碼中。測試類型將只返回硬編碼值。您可以使用實時數據庫編寫測試,然後可以以TDD方式編寫「測試」數據庫的測試。

一旦它們都匹配(所有測試都通過),則通過編寫在「測試」數據庫上運行的測試,然後在實時數據庫上添加測試來添加任何新的數據庫功能。

記住所有的代碼應該只使用接口到數據庫而不是實例化的實時數據庫類。一旦你掌握了這個過程,你可以在數據庫代碼中深入研究(如果你願意的話),但是我會說在分離和測試業務和UI邏輯時遵循相同的過程對於傳統項目。

您可能會發現,一種實用的方法是僅在我添加新代碼時描述的過程中分離出功能。換句話說,在添加新功能之前,根據描述編寫代碼來描述它通過(實時和測試版本),然後使用測試是否通過或未能指導編碼來更改或添加新功能的測試。

如果覆蓋了所有您希望測試失敗的基準,請測試通過並可能測試異常情況。

祝你好運。對於那些膽小的人來說這不是一份工作(過去不得不做很多次)。

相關問題