将测试作为Team Services构建过程的一部分运行时出现问题

时间:2017-01-05 19:47:01

标签: asp.net-core azure-devops tfsbuild .net-core asp.net-core-testhost

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

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

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

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

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

我尝试使用VSTS任务"在远程机器上运行Powershell"因为它允许我提供用户名和密码。但似乎有问题试图远程连接到自己(这可能是可以理解的)。

我不知所措。我不知道如何让它工作。除了为服务用户提供在数据库上运行这些查询的能力。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

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

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

身份验证文章:Choose an Authentication Mode

答案 1 :(得分:1)

您可以通过传递适当的凭据(例如

)来启动具有所需身份的流程
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)在您安装测试代理的计算机池上分发测试;
  • 提供测试运行的身份凭证,此功能在任务中开箱即用,即在根目录解决您的问题;