簡體   English   中英

如何在C#中為數據庫數據進行集成測試?

[英]How to seed database data for integration testing in C#?

我最近一直在針對ASP.Net MVC控制器操作編寫一些集成測試,並且由於難以設置為了運行測試而需要存在的測試數據而感到沮喪。

例如,我想測試控制器的“添加”,“編輯”和“刪除”操作。 我可以編寫“添加”測試,但后來發現編寫“編輯”測試我要么必須調用“添加”測試的代碼來創建一個記錄,以便我可以編輯它,或者在測試類中做了很多設置,這些都沒有特別吸引人。

理想情況下,我想使用或開發集成測試框架,以便以可重用的方式為集成測試添加種子數據,以便安排/行為/斷言測試的排列方面可以集中精力安排我特別需要安排的內容我的測試而不是關注自己安排一些參考數據,這些參考數據只與測試下的代碼間接相關。

我碰巧使用NHibernate,但我相信任何數據播種功能都應該忽略它,並且能夠直接操作數據庫; ORM可能會改變,但我總是會使用SQL數據庫。

我正在使用NUnit,因此設想掛鈎測試/ testfixture setup / teardown(但我認為一個好的解決方案可能會轉移到其他測試框架)。

我在我的主項目中使用FluentMigrator來管理參考數據的模式和種子,因此它很好,但不是必須能夠使用FluentMigrator框架在整個解決方案中采用一致的方法。

所以我的問題是,“你如何為C#中的集成測試種下數據庫數據?” 你直接執行SQL嗎? 你使用框架嗎?

您可以在Sql Server Compact上進行集成測試,您將有一個.sdf文件,您可以連接到它,將文件的路徑作為連接字符串。 這將更快,更容易設置和使用。

您的集成測試可能不需要數百萬行數據。 您可以將測試數據插入數據庫並將其另存為TestDbOriginal.sdf

當您運行測試時,只需復制一個' TestDbOriginal.sdf '並處理該副本,該副本已經有數據。 如果要測試特定方案,則需要通過調用添加,刪除,編輯等方法來准備數據。

當您進行生產或性能測試時,切換回原始服務器版本,無論是Sql Server 2008還是其他任何版本。

我不知道它是否一定是'正確'的事情,但我總是使用我的add / create方法播種。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM