如何在每次测试运行时重新部署,重新创建数据库

时间:2012-08-10 08:42:13

标签: visual-studio mstest visual-studio-2012 sql-server-2012

目前我正在使用Visual Studio 2012 RC和SQL Server 2012 RTM。

我想知道如何为每次测试运行重新部署/重新创建测试数据库。

请记住,我使用Visual Studio 2012的模板为数据库创建了一个SQL Server数据库项目。

实际上我不太确定我的想法,但 .testsettings 文件有安装和清理脚本。这是要走的路吗?例如,读取数据库项目的PowerShell脚本生成脚本并对数据库执行它吗?

我想有更好的方法可以做到这一点,它应该是一个开箱即用的解决方案,但我忽略了它,而 Google 并没有帮助我找到合适的解决方案。

3 个答案:

答案 0 :(得分:3)

如上所述,你可能想要使用VS 2012.Local.testsettings>用于创建/拆除SQL Server数据库的安装程序和清理脚本。

enter image description here

对于脚本,您可能希望将powershell与.dacpac(而不仅仅是T-SQL脚本)一起使用,因为您正在使用SSDT项目。这是一些示例代码的link - 特别是您可能需要查看'Deploy-Dac'命令。

如果您不熟悉.dacpacs作为SSDT创建的数据库项目的(构建)输出,请查看此参考link

答案 1 :(得分:3)

编辑:虽然这没有以简单的SQL Server方式回答问题,但是一个简单的实体框架方法如下:我发现我可以通过使用DbContext每次正确创建和销毁我的数据库。我的测试的设置和清理阶段中的Database.CreateIfNotExists()和DbContext.Database.Delete()方法。

答案 2 :(得分:2)

最快的解决方案,虽然有点黑客,但非常简单。您可以将调试选项卡下的DB Projects属性设置为“始终重新创建DB”。然后单击两次测试,进行调试/构建,然后运行所有测试。您应该在localDB上获得一个新构建的数据库,以便您运行测试。您还可以将调试DB的目标(同样是DB项目属性)更改为您想要的任何目标,这样您就可以部署到.dacpac或现有SQL DB或任何位置。这意味着分两步进行测试,如果你的构建很长,那可能很烦人,但它确实有效。否则,我相信脚本是你唯一的选择。

相关问题