unit-testing - 在 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 身份验证。
解决方案
如果 SSDT 单元测试连接到本地计算机上的数据库服务器,则 azure devops 管道将失败,因为托管代理无法与本地计算机通信。
在这种情况下,您应该在本地计算机上创建一个自托管代理,并通过将池定义为 yaml 管道中的本地代理池,在自托管代理上运行您的管道。
如果您正在使用其他云数据库服务器,例如 azure sql server。您可以检查 App.config 中的 connectionString 是否正确,并提供正确的User ID和Password。app.config 文件中的 connectionString 如下例所示
如果您想避免将敏感信息存储在 app.config 中的连接字符串中。您可以将 connectionString 存储在管道中的秘密变量中。
并使用 app.config 中的令牌connectionString="#{sqlDbTestConnectionString}#"
代替真实的连接字符串。
然后在管道中的 VsTest 任务之前添加替换令牌任务#{sqlDbTestConnectionString}#
,以将app.config 中的令牌替换为秘密变量中定义的真实 connectionString。
您可以查看此博客以获取更多信息。
推荐阅读
- javascript - 如何理解JavaScript的分析和执行原理
- javascript - 尝试制作自动点击器的 javascript 新手
- math - 如何使用单个参数定义曲线变换?
- python - 为什么Python可以实现a,b = b,a
- css - CSS无限循环问题
- r - 在 R 中使用 tidyverse 在单个 tibble 中汇总分组和未分组的数据
- networking - 当我尝试在网关中 ping “eth1”的 ip 时获取“请求时间”
- python - pyautogui 用于特定窗口的多任务处理
- android-studio - Android Studio:导入 org.tensorflow.Operation 似乎不起作用
- javascript - 为什么我的 React 应用程序中的 console.logs 和 UI 不显示相同的状态变量?