运行 测试作为团队服务构建过程的一部分时出现问题

Issue when running tests as part of Team Services build process

我在我工作的公司设置了一个构建服务器。 此构建服务器与 Visual Studio Team Services 交互工作。

建筑效果很好,发布效果也很好。我 运行 关注的问题是能够 运行 "dotnet test" 作为不同的用户。

这是必需的,因为当前代理 运行 所属的用户是一个服务帐户。它可以访问 IIS 并能够将文件移动到需要的位置。但是它没有访问数据库的权限。

由于我们使用了一些集成测试,因此在连接到数据库时出错,因为它正在尝试以服务用户身份连接。

到目前为止,我还没有找到一种方法 运行 "dotnet test" 作为不同的用户,特别是有权查询数据库的用户。

我尝试使用 VSTS 任务 "Run Powershell on Remote Machines",因为它允许我提供用户名和密码。但它似乎在尝试远程连接到自身时遇到问题(这可能是可以理解的)。

我很茫然。我不知道如何让它工作。除了让服务用户能够 运行 对数据库进行这些查询。

非常感谢任何帮助!

您可以通过传递适当的凭据来启动具有所需身份的进程,例如

param($user, $pwd)
Start-Process $DOTNET_TEST_COMMAND -WorkingDirectory $DESIREDCURRENTWORKINGDIR -Credential (New-Object System.Management.Automation.PSCredential -ArgumentList @($user,(ConvertTo-SecureString -String $pwd -AsPlainText -Force)))

我的观点是,在构建期间只应执行单元测试,因为如果将更复杂的测试作为功能测试执行,则可能会对共享构建机器产生副作用。 我建议在 VSTS 发布期间使用 Run Functional Tests 任务,而不是 运行 在构建机器上进行功能测试,因为它允许您:

  • 通过 Deploy Test Agent task);
  • 在安装了测试代理的机器池中分发测试
  • 提供测试 运行 的身份凭据,此功能在任务中开箱即用,即从根本上解决您的问题;

SQL 身份验证是更好的方法。因此更改连接字符串以使用 SQL 身份验证。

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

认证文章:Choose an Authentication Mode