2014-04-25 42 views
4

我想用單元測試在Visual Studio中測試我的C#代碼。代碼與MySQL數據庫交互。與數據庫交互但不在數據庫中創建數據的單元測試代碼

什麼,我想測試
用戶打開我的應用程序,將通過Web服務被保存在數據庫中的一個例子。現在我想知道表Users在新用戶出現之前是否還有一行。但是如果我在webservice中測試這個方法,它會在數據庫中創建一個記錄,那麼測試數據將會在數據庫中。我不希望測試數據在我的數據庫中。

有沒有解決這個問題的方法?

+2

如果與Web服務和數據庫交互,那麼它是不是一個單元測試。單元測試測試代碼_in isolation_。 –

+0

使用內存數據庫進行這些類型的集成測試 – NimChimpsky

+0

您應該用啞元替換數據庫並對其進行斷言,因爲John編寫的UnitTest不應與數據庫進行交互。 – Console

回答

7

我認爲你要找的是mocking。這允許您模擬您的數據訪問代碼,以測試您的業務邏輯。

有很多很好的框架,包括moqrhino mocks

如果您想實際填充數據庫以測試數據訪問層,那麼您正在尋找更多的集成測試。我寫了一個非常全面的答案,涵蓋了我對數據庫集成測試here的方法。

1

你在找什麼是模擬。例如Moq for C#。

將數據庫邏輯包裝在一個界面中,並在單元測試中模擬它。這樣您就可以與模擬的數據庫邏輯進行交互,而無需執行它。

1

嘲笑是一種很好的方法。

它需要更多的集成測試類的方法(當您想測試實際的數據庫交互時可能會有幫助),您可以使用本地運行的MySql服務器實例。

我已經創建了一個項目,讓您可以在沒有設置的情況下在實時MySql服務器上運行測試。

你可以下載它NuGet包(mysql.server的),或者看看這裏:https://github.com/stumpdk/MySql.Server