2010-01-29 68 views
0

在我們的單元測試中,我有一個存根對象,它在單元測試期間在內存中創建一組數據,以便實時數據庫不是用過的。單元測試 - 如何在存根數據庫數據時設置測試數據

我有單元測試,使用測試下的查詢和在測試中提供給查詢的值來檢查從該集返回的行數。我的第一個問題是,因爲我們使用的是MSTest,並且它不支持參數化測試,所以我們對每個不同的值集進行了一次測試,並且結束了許多次測試,只是提供給一個例程的值不同。使用不同的測試框架可能在政治上很困難。

對數據進行處理有點難以實現,因爲它是通過代碼將實體添加到集合中創建的,所以很難輕鬆查看集合中的數據,並且如果我們決定在將來向該集合添加記錄,我們需要更新測試中應該返回的記錄數,以便我們的測試非常依賴這些數據。似乎沒有辦法自動執行此操作。是這樣嗎?

回答

2
  1. 由於您已經排除使用另一個單元測試框架,如何編寫自己的參數化測試。編寫一個循環遍歷不同數據集的測試,使用不同的參數調用私有助手方法。將每個數據集運行的結果收集到「收集參數」。我建議你只記錄錯誤/失敗的數據集以減少噪音。在循環結束時,如果收集參數不爲空,則發出相當於Assert.Fail並將結果記錄到控制檯。 (不利之處在於,您無法在GUI中看到單個測試,並且如果該組織正在監視測試的次數,那麼對於所有這些工作,您只能獲得+1。)
  2. 這可以讓您以專門的失敗如你所願 - 你可以在失敗軌跡中包含必要的位。這將幫助您「快速查看」哪種情況失敗。
+0

+1。絕對有必要開展自己的數據驅動測試課程;我們在獲得NUnit 2.5之前做了類似的事情。它工作得很好:) – 2010-01-30 23:42:18

0

看看Visual Studio 2010終極版如何在數據庫測試中執行此操作(您可以下載完全配置的VPC)。

一個選項是將「上下文」添加到您的測試中,所以當您初始化測試時,上下文將獲得初始化測試所需的參數。您可以通過測試方法中的代碼訪問參數,也可以動態地將其分配給要測試的代碼(可能不是最佳選擇)。

此外,您還可以添加預期結果或更好的測試應符合的條件。這些條件可以從某種數據源(例如數據庫)初始化並添加爲數據集。創建一個方法來評估測試方法的條件。

考慮構建特定的類以處理不同的上下文設置或條件,並創建測試類可以繼承的基本測試類(它增加了功能)。