2012-08-10 48 views
6

目前我正在使用Visual Studio 2012 RC和SQL Server 2012 RTM。如何重新部署,在每次測試運行時重新創建數據庫

我想知道如何爲每次測試運行重新部署/重新創建一個測試數據庫。

請記住,我有一個使用Visual Studio 2012模板的數據庫的SQL Server數據庫項目。

其實我不是很肯定的想法,我在我的腦海裏了,但.testsettings文件有安裝和清理腳本。這是要走的路嗎?例如,一個PowerShell腳本讀取數據庫項目生成的腳本並對數據庫執行它?

我猜是這樣做的更好的方式,它應該是一個不折不扣的現成解決方案,但我不理它,谷歌不幫我找到合適的解決方案。

+0

是否要針對SQL Server或針對LocalDB進行部署和測試?如果你每次都重建,我會建議對LocalDB進行測試。此外,你是否使用TFS或其他作爲構建代理?通過「運行所有測試」,你的意思是手動選擇運行所有測試,還是某種形式的自動化(即在每次構建,CI,門控簽入等之後)? – 2012-08-10 18:10:12

+0

@ aclear16我想對SQL Server進行部署。目前,它不適用於TFS Build,它用於手動執行有序測試。 – 2012-08-12 07:20:59

回答

3

如上所述,您可能想要使用VS 2012 .Local.testsettings>安裝和清理腳本來創建/拆卸SQL Server數據庫。

enter image description here

對於您可能需要使用PowerShell與.dacpac(而不僅僅是一個T-SQL腳本),因爲你正在使用SSDT項目中的腳本。以下是一些示例代碼的link - 特別是您可能需要查看「Deploy-Dac」命令。

如果您不熟悉.dacpacs作爲SSDT創建的數據庫項目的(構建)輸出,請參閱此參考link

+0

謝謝,我會試一試。讓我檢查您的指示:) – 2012-08-13 07:02:42

+0

PowerShell腳本是否可以直接作爲安裝和清理腳本啓動? – 2012-08-13 07:38:05

+0

例如,您如何看待aclear16的LocalDB方法(請參閱他對問題本身的評論)。 – 2012-08-13 08:06:11

2

最快的解決方案,雖然有點破解,但卻非常簡單。您可以將調試選項卡下的數據庫項目屬性設置爲「始終重新創建數據庫」。然後測試兩次點擊,進行調試/構建,然後運行所有測試。你應該在localDB上爲你測試一個新建的數據庫。您還可以將調試數據庫的目標(即數據庫項目屬性)更改爲任何您想要的,以便您可以將其部署到.dacpac或現有SQL數據庫或任何地方。這意味着分兩步進行測試,如果你的構建很長,可能會很煩人,但是它很有效。否則,我相信腳本是你唯一的選擇。

2

編輯:儘管這並沒有以普通的SQL Server方式回答這個問題,但一個簡單的實體框架方法如下:我發現我可以通過使用DbContext.Database正確地創建和銷燬我的數據庫.CreateIfNotExists()和DbContext.Database.Delete()方法在我的測試的設置和清理階段。

+0

那麼,那是當你使用EF :) – 2013-10-22 17:48:02

+0

我的壞...哎呀。 – CokoBWare 2013-10-23 13:11:18

+0

嗯,實際上它很有用,您爲未來的訪問者添加了此信息! +1;) – 2013-10-23 21:00:12

相關問題