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

Asp.net core 作为Team Services构建过程的一部分运行测试时出现问题,asp.net-core,azure-devops,tfsbuild,.net-core,asp.net-core-testhost,Asp.net Core,Azure Devops,Tfsbuild,.net Core,Asp.net Core Testhost,我在我工作的公司安装了一个构建服务器。 此生成服务器与Visual Studio Team Services交互工作 建筑很好,出版也很好。我遇到的问题是作为不同用户运行“dotnet测试”的能力 这是必需的,因为当前代理运行的用户是服务帐户。它可以访问IIS,并能够将文件移动到需要的位置。但它没有访问数据库的权限 因为我们使用了一些集成测试,所以在连接到数据库时会出错,因为它试图以服务用户的身份连接 到目前为止,我还没有找到一种以不同用户的身份运行“dotnet测试”的方法,特别是有权查询数据

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

建筑很好,出版也很好。我遇到的问题是作为不同用户运行“dotnet测试”的能力

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

因为我们使用了一些集成测试,所以在连接到数据库时会出错,因为它试图以服务用户的身份连接

到目前为止,我还没有找到一种以不同用户的身份运行“dotnet测试”的方法,特别是有权查询数据库的用户

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

我不知所措。我不知道如何让它工作。除了让服务用户能够在数据库上运行这些查询之外


非常感谢您的帮助

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

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)))
我的观点是,在构建过程中,应该只执行单元测试,因为如果您将更多复杂的测试作为功能测试来执行,可能会对共享构建机器产生副作用。 与其在构建机器上运行功能测试,我建议在VST发布期间使用该任务,因为它允许您:

  • 在通过安装测试代理的计算机池上分发测试)
  • 提供测试所针对的身份的凭据,此功能在任务中是现成的,即从根本上解决您的问题
您可以通过传递适当的凭据(例如

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)))
我的观点是,在构建过程中,应该只执行单元测试,因为如果您将更多复杂的测试作为功能测试来执行,可能会对共享构建机器产生副作用。 与其在构建机器上运行功能测试,我建议在VST发布期间使用该任务,因为它允许您:

  • 在通过安装测试代理的计算机池上分发测试)
  • 提供测试所针对的身份的凭据,此功能在任务中是现成的,即从根本上解决您的问题
SQL身份验证是更好的方法。因此,将connectionstring更改为使用SQL身份验证

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

身份验证文章:

SQL身份验证是更好的方法。因此,将connectionstring更改为使用SQL身份验证

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

身份验证文章:

如果可以进行SQL身份验证,这确实是最好的方法。看起来我可能需要在生成服务器上执行用户机密。如果SQL Auth是可能的,这确实是最好的方法。看起来我可能需要在构建服务器上执行用户机密。运行功能测试的想法真的很好。我希望我能把这两个标记为答案。它们对我的问题都很重要。运行功能测试的想法真的很好。我希望我能把这两个标记为答案。它们对我的问题都至关重要。