tSQLt + SSDT 集成到 Jenkins

Posted

技术标签:

【中文标题】tSQLt + SSDT 集成到 Jenkins【英文标题】:Integration of tSQLt + SSDT into Jenkins 【发布时间】:2020-07-06 08:32:53 【问题描述】:

我使用的是 SQL Server 2017 和 Visual Studio 2019 社区版。

我创建了我的第一个 SSDT 项目并在 Jenkins 中对其进行了配置,但在运行我的 tSQLt 测试用例之前部署它时遇到了问题。

请参考我用来配置所有内容的链接:

https://the.agilesql.club/2017/03/sql-server-continuous-deployment-in-a-box/#comment-4976546606

PS:在我使用 SSDT 和 Sql server 最新版本时,对 msbuild 路径和其他相关文件的相关 ps 文件进行了更改,以上链接显示旧版本。

错误

我在 jenkins 中成功构建了我的 ssdt 项目,但是当它尝试在“单元测试”步骤中运行“DeployDacpac.ps1”时,它在管道步骤中显示成功,但实际上脚本显示如下错误:

C:\Program Files (x86)\Jenkins\workspace\Test12_master>powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Program Files (x86)\Jenkins\workspace\Test12_master/Deploy/DeployDacpac.ps1" -projectPath "C:\Program Files (x86)\Jenkins\workspace\Test12_master" -dacpac "C:\Program Files (x86)\Jenkins\workspace\Test12_master/bin/Debug/DatabaseUT.dacpac" -publishProfile "C:\Program Files (x86)\Jenkins\workspace\Test12_master/DatabaseUT.publishprofile.xml"

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Data.Tools.Utilities, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
at Microsoft.Data.Tools.Schema.CommandLineTool.Program.Main(String[] args)

更新:现在将 sqlpackage.exe 的路径从我的本地文件夹更改为 Visual Studio...\SQLDB\DAC\140\sqlpackage.exe" 部署工作正常。但它表明 tSQLt 单元测试步骤运行成功。它没有显示任何测试用例失败或通过的正确消息。

这是单元测试运行步骤的一些结束结果行:

"... 将包“AgileSQLClub.tSQLtTestAdapter”安装到“C:\Program Files (x86)\Jenkins\workspace\Test17_master\Lib”。 缓存https://api.nuget.org/v3/registration5-gz-semver2/agilesqlclub.tsqlttestadapter/index.json 包“AgileSQLClub.tSQLtTestAdapter.0.59.0”已安装。 Microsoft (R) 测试执行命令行工具版本 16.6.0 版权所有 (c) 微软公司。版权所有。 开始测试执行,请稍候... 共有 158 个测试文件符合指定模式。"

它在 158 中考虑了所有的 sps,包括上面的 tSQLt sps。但是没有提到任何单元测试是否通过或失败。

请指导。

【问题讨论】:

更新:这个问题已经没有用了,因为我采用了其他更简单的方法。 【参考方案1】:

我使用批处理命令通过 jenkins 运行 tsqlt 测试用例,而不是 SSDT 项目。即 sqlcmd。 所以没必要再挖了

【讨论】:

以上是关于tSQLt + SSDT 集成到 Jenkins的主要内容,如果未能解决你的问题,请参考以下文章

关于自动化单元/集成测试的 SSDT 开发过程和最佳实践的提示

启用 DTC 的 SQL Server 2017 AG 上的 tSQLt

sql tSQLt准备用于伪造的表

TSQLT 单元测试 - 数据类型文本和文本在等于运算符中不兼容

dotConnect for Oracle v9.1发布,新增SSDT-BI项目模板

简化 SSDT 数据库项目到 localdb 的部署