如何在 Azure Devops yaml 构建管道中 运行 时指定 SSDT 单元测试的连接详细信息
How to specify connection details for SSDT unit tests when run in Azure Devops yaml build pipeline
我正在为我的数据库项目使用 SSDT 单元测试。他们 运行 从 Visual Studio 没问题。
当我在 Azure DevOps 上 运行 我的构建管道时,我希望这些测试 运行 但当它无法连接时。我收到以下错误:
System.Data.SqlClient.SqlException:
System.Data.SqlClient.SqlException: 110003;Invalid user or password.
我测试的yaml如下:
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*test*.dll
!**\*TestAdapter.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
app.config 文件中是否需要特别添加任何内容才能使其正常工作?注意:我正在使用 SQL 身份验证。
如果 SSDT 单元测试连接到本地计算机上的数据库服务器,azure devops 管道将失败,因为托管代理无法与本地计算机通信。
在这种情况下,您应该 create a self-hosted agent 在本地机器上,运行 通过在 yaml 管道中将池定义为本地代理池,在自托管代理上 运行 管道。
如果您使用其他云数据库服务器,如 azure sql 服务器。您可以检查 App.config 中的 connectionString 是否正确,并提供正确的 User ID 和 Password。 app.config 文件中的 connectionString 如下例
如果您想避免在 app.config 中的连接字符串中存储敏感信息。您可以将 connectionString 存储在管道中的 secret variable 中。
并在 app.config 中使用标记 connectionString="#{sqlDbTestConnectionString}#"
代替真实的连接字符串。
然后在管道中的 VsTest 任务之前添加 replace token task,以将 app.config 中的标记 #{sqlDbTestConnectionString}#
替换为秘密变量中定义的真实连接字符串。
您可以查看 this blog 了解更多信息。
我正在为我的数据库项目使用 SSDT 单元测试。他们 运行 从 Visual Studio 没问题。
当我在 Azure DevOps 上 运行 我的构建管道时,我希望这些测试 运行 但当它无法连接时。我收到以下错误:
System.Data.SqlClient.SqlException: System.Data.SqlClient.SqlException: 110003;Invalid user or password.
我测试的yaml如下:
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*test*.dll
!**\*TestAdapter.dll
!**\obj\**
searchFolder: '$(System.DefaultWorkingDirectory)'
app.config 文件中是否需要特别添加任何内容才能使其正常工作?注意:我正在使用 SQL 身份验证。
如果 SSDT 单元测试连接到本地计算机上的数据库服务器,azure devops 管道将失败,因为托管代理无法与本地计算机通信。
在这种情况下,您应该 create a self-hosted agent 在本地机器上,运行 通过在 yaml 管道中将池定义为本地代理池,在自托管代理上 运行 管道。
如果您使用其他云数据库服务器,如 azure sql 服务器。您可以检查 App.config 中的 connectionString 是否正确,并提供正确的 User ID 和 Password。 app.config 文件中的 connectionString 如下例
如果您想避免在 app.config 中的连接字符串中存储敏感信息。您可以将 connectionString 存储在管道中的 secret variable 中。
并在 app.config 中使用标记 connectionString="#{sqlDbTestConnectionString}#"
代替真实的连接字符串。
然后在管道中的 VsTest 任务之前添加 replace token task,以将 app.config 中的标记 #{sqlDbTestConnectionString}#
替换为秘密变量中定义的真实连接字符串。
您可以查看 this blog 了解更多信息。