2008-12-24 118 views
2

只是想知道如果任何人有任何想法如何測試一個數據訪問方法。我發現測試檢索數據訪問方法更容易,因爲我可以嘲笑ExecuteReader並返回填充的dataTable.CreateDataReader()。通過這樣做,我可以測試是否返回結果集以查看我的對象是否正確填充。測試數據訪問堅持方法

但是,如何將其轉換爲我堅持不懈的方法(即添加,更新,刪除等)。我想測試的是它是否正確填充命令參數等。

任何想法? 乾杯

回答

1

嘲笑是要走的路。使用類似Moq的東西,您可以爲您的數據訪問類提供模擬連接(例如IDbConnection),並測試連接創建的命令是否正確設置了其參數。

我後來寫了一篇博客文章(請參閱here),其中描述了一種方法來模擬對IDbCommand.CreateParameter的連續調用。一旦你設置了模擬參數,你就可以驗證它們的Value和ParameterName屬性是否被設置。

1

我們使用內存數據庫(hsql)進行單元測試。安裝程序啓動一個交易,拆卸將其折回。然後你總是知道你單元測試中db的狀態。

1

對於我們的o/r mapper框架LLBLGen Pro,我們使用專門的數據庫進行測試,併爲每組功能提供不同的測試項目。因此,我們有一個特殊的插入/更新數據庫,例如用於測試繼承相關操作的特殊數據庫,用於巨集的特殊數據庫以及用於提取的特殊數據庫。最重要的是,我們已經將不同項目中的單元測試分開了:面向讀取,面向LINK提供者,面向插入/更新/刪除,面向內存的東西,等等。

這樣,測試是可維護的並且不會不會影響彼此。有了這些特殊的數據庫,我們知道該期待什麼以及該做什麼。

這也取決於你持續性邏輯測試的意義:如果你想像我們一樣測試框架級例程,那麼嘲笑是真的沒什麼用處:你想測試真正的交易在情況下,它涵蓋了大部分(如果不是全部)案例。如果您真的在討論測試使用框架級代碼(例如您的存儲庫代碼)的代碼,那麼嘲笑可以提供幫助,只要使用的框架當然沒有錯誤。 :)