使用VSTS进行SQL Server单元测试自动化 - 团队服务

时间:2017-08-10 18:38:40

标签: visual-studio unit-testing automated-tests azure-devops tfsbuild

我正在使用SQL Server,SSDT,GIT和VSTS实现数据库持续集成过程,我也很新,所以这里有:

我已经可以在本地计算机上开发,使用“发布”和“架构比较”功能将Visual Studio数据库项目与本地数据库同步。

我还能够在每次“推送”操作中在VSTS中触发构建定义,这将构建然后触发向QA环境的发布。 现在我正在尝试在构建之后自动运行一些单元测试,但是当构建定义运行时,它无法在构建VM SQL Server实例(每次运行构建定义时创建的VM)中找到任何数据库......

所以我需要以某种方式应用我的数据库模式,因此它可以通过Build Definition中的“Visual Studio Test”任务运行自动化测试。 我想这应该是“发布”功能,或者我应该尝试使用PowerShell脚本部署.dacpac文件?

我尝试过这个教程:https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/perf-test/continuous-build-test-automation#test-integration-with-the-build

但我无法弄清楚如何在本文的“与构建测试集成”部分中配置步骤4“使用”数据库同步“任务”。

拜托,有没有人这样做过?

2 个答案:

答案 0 :(得分:2)

好的,好的!所以,我可以让它工作,因为我期待...你只需要使用带有参数的MSBUILD任务来发布数据库,如下所示:

/ t:构建;发布/p:SqlPublishProfilePath=your_publish_profile.xml

在您的publish_profile文件中,您必须指向VSTS内VM中的SQL Server实例。所以我保留了一个发布配置文件文件版本为开发人员指向我的VCS中的localhost,另一个分开的文件指向VSTS" (localdb)\ MSSQLLocalDB"。它与数据库的名称无关,因为它将创建一个具有您配置名称的新名称。

然后你只需要添加" Visual Studio Test"任务和Voila!

请注意有关测试的一件事:它将指向VSTS中的默认构建目录,它是变量$(Build.SourcesDirectory)中的一个

我看到有些人使用构建参数" / p:OutDir"获取.dacpac文件以便以后使用"复制文件"进入Artifacts文件夹的任务。

但如果你这样做,你必须改变" Visual Studio任务"目录也是,所以我建议只需指向"复制文件"任务源为$(Build.SourcesDirectory)。然后让#34; Visual Studio测试"具有默认值的任务,它将正常运行。

答案 1 :(得分:1)

您可以使用SQL Server单元测试(通过Visual Studio测试任务运行测试)来验证数据库,并且可以在测试之前部署数据库。有关详细信息,请参阅:Verifying Database Code by Using SQL Server Unit Tests

另一方面,您可以使用Deploy SQL Dacpac Deployment group taskAzure SQL Database Deployment部署SQL Server数据库。