TFS 构建定义 - 添加步骤以运行 DacPac 进行单元测试

Posted

技术标签:

【中文标题】TFS 构建定义 - 添加步骤以运行 DacPac 进行单元测试【英文标题】:TFS Build definition - add step to run DacPac for Unit Tests 【发布时间】:2020-06-09 18:12:18 【问题描述】:

我们正在使用 Microsoft Visual Studio Team Foundation Server 版本 16.131 的本地安装。

我们有一个开发持续集成构建定义,其中包括在一个非常旧的应用程序上运行一些单元测试。因此,单元测试需要一个数据库来运行(我知道,单元测试不是一个理想的情况......)

构建的工件之一是数据库的 DACPAC。

我想在运行单元测试步骤之前将该 DACPAC 中的任何数据库更改部署为构建定义的一部分。这样,任何依赖于数据库更改而添加/更改的测试都将(希望)通过。

如果可以的话,有什么想法吗?如果可以,我如何在构建定义中从 DACPAC 发布?

【问题讨论】:

如果他们需要数据库,那么他们不是单元测试。它们是集成测试。 【参考方案1】:

我们正在构建/发布管道中使用 PowerShell 步骤。 在 powershell 脚本中,您将调用 SqlPackage:

&"C:\Program Files\Microsoft SQL Server\140\DAC\bin\SqlPackage.exe" /Action:Publish /SourceFile:"Dacpac_Artifact\DACPAC\DB.dacpac" /Profile:"Dacpac_Artifact\DACPAC\FileWithPublishPrife.publish.xml"

【讨论】:

【参考方案2】:

您还可以查看这个 Microsoft DevLabs 任务,它还包含一个远程部署 dacpac 的子任务,因此您可以部署到另一台机器(如果需要,也可以使用 localhost 部署在构建服务器本身上)。还有其他市场任务,您可以只使用 navigate to the store 并输入 sql,您会看到一打。

IIS Web App Deployment Using WinRM

【讨论】:

以上是关于TFS 构建定义 - 添加步骤以运行 DacPac 进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Windows Azure Web 角色上的 PHP 项目配置 TFS 构建定义以实现持续集成?

在 TFS 构建中运行 Specflow 测试

java/maven项目的TFS代码分析

从 tfs 调用服务结构包命令失败

TFS中的Robocopy构建PowerShell步骤报告失败但没有错误

从 TFS 2015 尝试从私人提要恢复包时出错