我目前正在嚴重考慮我們的團隊正在構建的單元測試一個asp.net mvc 3 web應用程序。單元測試:真正的數據庫與嘲諷
問題是我們真的必須嘲笑很多東西,我認爲我們的單元測試並沒有涵蓋所有與網絡服務器和數據庫相關的東西。
例子:
我有下面的代碼的方法:
public List<Useraccount> GetUseraccounts(Company company)
{
return company.Useraccounts.ToList<Useraccount>();
}
我devloper抱怨說,他有注射假的公司對象他通過hisself準備。 他想從數據庫中獲得真實的對象。
我的問題: 在單元測試期間是否可以使用真實數據庫(也可以是SQLite/SQLExpress或其他)?這有用嗎? 有什麼優點和缺點?我們不得不模擬太多的對象。例如,我們無法驗證此類呼叫是否正常工作:
Useraccount useraccount = UnitOfWork.UseraccountRepository.Get(u => u.EnableCode == enableCode && u.IsEnabled == false).Single<Useraccount>();
聽起來好像你可能模糊了* unit * testing和* integration * testing之間的界限。 – 2013-03-15 12:46:08
含義是什麼?真正的數據庫內容僅用於集成測試? – mosquito87 2013-03-15 12:49:14
我相信@四十二意味着你應該考慮兩套測試。一個是關於單元測試,測試你的類做他們應該做什麼,嘲笑依賴。然後,您可以進入下一級黑盒/集成測試,您可以在其中全面測試您的服務,但可以在需要的地方剔除第三方服務。 – Bronumski 2013-03-15 13:27:50