首页 > 解决方案 > 在 Azure Devops yaml 构建管道中运行时如何指定 SSDT 单元测试的连接详细信息

问题描述

我正在为我的数据库项目使用 SSDT 单元测试。他们从 Visual Studio 运行没有问题。

当我在 Azure DevOps 上运行构建管道但无法连接时,我希望这些测试能够运行。我收到以下错误:

System.Data.SqlClient.SqlException:System.Data.SqlClient.SqlException:110003;用户或密码无效。

我测试的yaml如下:

- task: VSTest@2
  inputs:
        testSelector: 'testAssemblies'
        testAssemblyVer2: |
          **\*test*.dll
          !**\*TestAdapter.dll
          !**\obj\**
        searchFolder: '$(System.DefaultWorkingDirectory)'

app.config 文件中是否需要特别添加任何内容才能使其正常工作?注意:我使用的是 SQL 身份验证。

标签: unit-testingazure-devopssql-server-data-tools

解决方案


如果 SSDT 单元测试连接到本地计算机上的数据库服务器,则 azure devops 管道将失败,因为托管代理无法与本地计算机通信。

在这种情况下,您应该在本地计算机上创建一个自托管代理,并通过将池定义为 yaml 管道中的本地代理池,在自托管代理上运行您的管道。

如果您正在使用其他云数据库服务器,例如 azure sql server。您可以检查 App.config 中的 connectionString 是否正确,并提供正确的User IDPassword。app.config 文件中的 connectionString 如下例所示

在此处输入图像描述

如果您想避免将敏感信息存储在 app.config 中的连接字符串中。您可以将 connectionString 存储在管道中的秘密变量中。

并使用 app.config 中的令牌connectionString="#{sqlDbTestConnectionString}#"代替真实的连接字符串。

然后在管道中的 VsTest 任务之前添加替换令牌任务#{sqlDbTestConnectionString}#,以将app.config 中的令牌替换为秘密变量中定义的真实 connectionString。

您可以查看此博客以获取更多信息。


推荐阅读