2012-12-07 164 views
5

如何使用NUnit和測試數據庫來驗證我的代碼?我會理論上使用mocks(moq),但是我的代碼更多的是維護形式並修復了它的模式,我沒有設置所有的mock。使用單元測試和測試數據庫

我只是創建一個測試項目,然後寫測試,實際連接到我的測試數據庫,並執行代碼,因爲我將在應用程序中?然後,我用斷言檢查代碼,並確定我要求的是我正確返回的內容?

+0

這聽起來像你實際上意味着集成測試。單元測試是孤立的,提供依賴關係的模擬/假實現來測試他們不會有任何數據庫代碼的方法。 –

回答

6

我該如何使用NUnit和測試數據庫來驗證我的代碼?我會 理論上使用嘲笑(MOQ),但我的代碼更多的維護形式和 修復它的模式,我沒有設置所有的嘲笑。

如果您想測試某個類的確切實現行爲,那麼僅使用mock是有用的。這意味着你從字面上斷言一個類調用另一個類的特定方法。例如:我想斷言Ninja.Attack()調用Sword.Unsheath()。

難道我只是創建一個測試項目,然後寫測試,實際上 連接到我的測試數據庫和執行代碼,因爲我wwould在 應用程序?然後我用斷言檢查代碼,並確定我要求的 是我正確回覆的內容?

這只是一個普通的舊單元測試。如果實現這一目標沒有障礙,那麼這是一個很好的指標,這將成爲您最有效的測試方法。這是實用和高效的。

還有一個你沒有提到的測試工具,叫做存根(stub)。我強烈建議你閱讀這篇更多信息經典文章:

http://martinfowler.com/articles/mocksArentStubs.html

+0

謝謝,測試數據庫它是我的話。所以只需用我的代碼調用數據庫並測試它的正確性。 – cdub

+0

這可能看起來太美好,但它是真實的,但它的工作原理。特別是考慮到您的應用程序已經寫好。 –

2

因爲我們不是在談論理論上的情況下,這是我會做什麼 - 從我的理解,你要測試的是,無論你的應用程序正確連接到數據庫並獲取所需的數據或不。

  1. 創建一個測試數據庫具有相同的架構
  2. 添加一些虛擬數據在
  3. 開放從代碼到數據庫的連接,請求所需的數據
  4. 寫斷言來測試你得到了什麼針對您的預期

另外,我不認爲DB這些測試應該被稱爲單元測試,因爲它們不是自包含的,並且依賴於其他因素,如你的數據庫是否正常運行與否。我會說他們接近於集成測試,它將測試應用程序的不同組件是否按照預期一起使用。

(丹的回答^^幾乎總結了我想說的話)

+1

是寫作壽的+1 – cdub