使用 MSTest Runner 执行 CodedUI 测试时 TeamCity Access 被拒绝错误

TeamCity Access denied error while executing CodedUI tests using MSTest Runner

我正在尝试使用 MSTest Runner 从 TeamCity 执行 CodedUI 测试。为了执行 CodedUI 测试,我在 TeamCity Server 上安装了 Visual Studio Test Agent,并使用 MSTest 配置了构建步骤。

错误日志如下。

Step 5/5: Execute CodedUI Test (MSTest) (1s)  
[18:31:25]Starting: C:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit  
[18:31:25]in directory: C:\BuildAgent\worka7958057951b685
[18:31:27]2015-01-02 18:31:27,536 [58756] ERROR JetBrains.BuildServer.NAntLoggers.NUnitLauncher2 - Failed to start process. Access is denied. Path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE, arguments: /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.UnitTests\bin\CI\BitwiseMobile.UnitTests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.UnitTests\bin\CI\BitwiseMobile.Tests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.CodedUITests\bin\CI\MobileSecurityAppCodedUITests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.Tests\bin\CI\BitwiseMobile.Tests.dll /resultsfile:C:\TeamCity\temp\buildTmp\tmp1BB9.tmp.teamcity.trx, at C:\BuildAgent\worka7958057951b685  
[18:31:27]System.Exception: Failed to start process. Access is denied. Path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE, arguments: /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.UnitTests\bin\CI\BitwiseMobile.UnitTests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.UnitTests\bin\CI\BitwiseMobile.Tests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.CodedUITests\bin\CI\MobileSecurityAppCodedUITests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.Tests\bin\CI\BitwiseMobile.Tests.dll /resultsfile:C:\TeamCity\temp\buildTmp\tmp1BB9.tmp.teamcity.trx, at C:\BuildAgent\worka7958057951b685 ---> System.ComponentModel.Win32Exception: Access is denied
[18:31:27]   at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
[18:31:27]   at System.Diagnostics.Process.Start()
[18:31:27]   at JetBrains.TeamCity.Utils.ProcessRunnerBase.Run(ProcessStartInfo psi) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\ProcessRunnerBase.cs:line 61
[18:31:27]   --- End of inner exception stack trace ---
[18:31:27]   at JetBrains.TeamCity.Utils.ProcessRunnerBase.Run(ProcessStartInfo psi) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\ProcessRunnerBase.cs:line 65
[18:31:27]   at JetBrains.TeamCity.Utils.Runtime.ProcessRun.Execute(IRunProcess proc) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\ProcessRun.cs:line 123
[18:31:27]   at JetBrains.TeamCity.Utils.Runtime.ProcessRun.Run(String executable, PlatformVersion env, PlatformType platform, EnvironmentArg[] envKeys, String[] args) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\ProcessRun.cs:line 58
[18:31:27]   at JetBrains.TeamCity.Utils.Runtime.ProcessRun.RunWithCommandLine(PlatformVersion env, PlatformType platform, String assembly, EnvironmentArg[] additionalEnvironment, String[] args) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\ProcessRun.cs:line 49
[18:31:27]   at JetBrains.TeamCity.Utils.Runtime.ProcessRun.RunWithCommandLine(PlatformVersion env, PlatformType platform, String assembly, String[] args) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\ProcessRun.cs:line 41
[18:31:27]   at JetBrains.TeamCity.Utils.Runtime.RunInRuntime.ForkInRuntime(PlatformVersion version, PlatformType type, String executable, String[] args) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\RunInRuntime.cs:line 50
[18:31:27]   at JetBrains.TeamCity.NUnitCommon.PlugableRunFactory.RunProcessAsPlugable.Run() in c:\BuildAgent\workf5b4bce579465c\src\TestRunnerCommon\src\PlugableRunFactory.cs:line 33
[18:31:27]   at JetBrains.BuildServer.NAntLoggers.NUnitLauncher2.ExecuteTasks(ITestRunArguments arguments, IPlugableTestRunner[] plugRuns) in c:\BuildAgent\workf5b4bce579465c\src\NUnitBootstrap\src\NUnitLauncher2.cs:line 136
[18:31:27]   at JetBrains.BuildServer.NAntLoggers.NUnitLauncher2.Run2(String[] args) in c:\BuildAgent\workf5b4bce579465c\src\NUnitBootstrap\src\NUnitLauncher2.cs:line 114
[18:31:27]   at JetBrains.BuildServer.NAntLoggers.NUnitLauncher2.Run(String[] args) in c:\BuildAgent\workf5b4bce579465c\src\NUnitBootstrap\src\NUnitLauncher2.cs:line 57
[18:31:27]Failed to start process. Access is denied. 
    Path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE, arguments: /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.UnitTests\bin\CI\BitwiseMobile.UnitTests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.UnitTests\bin\CI\BitwiseMobile.Tests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.CodedUITests\bin\CI\MobileSecurityAppCodedUITests.dll /testcontainer:C:\BuildAgent\worka7958057951b685\src\BitwiseMobile.Tests\bin\CI\BitwiseMobile.Tests.dll /resultsfile:C:\TeamCity\temp\buildTmp\tmp1BB9.tmp.teamcity.trx, at C:\BuildAgent\worka7958057951b685 
    at JetBrains.TeamCity.Utils.ProcessRunnerBase.Run(ProcessStartInfo psi) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\ProcessRunnerBase.cs:line 65
    at JetBrains.TeamCity.Utils.Runtime.ProcessRun.Execute(IRunProcess proc) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\ProcessRun.cs:line 123
    at JetBrains.TeamCity.Utils.Runtime.ProcessRun.Run(String executable, PlatformVersion env, PlatformType platform, EnvironmentArg[] envKeys, String[] args) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\ProcessRun.cs:line 58
    at JetBrains.TeamCity.Utils.Runtime.ProcessRun.RunWithCommandLine(PlatformVersion env, PlatformType platform, String assembly, EnvironmentArg[] additionalEnvironment, String[] args) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\ProcessRun.cs:line 49
    at JetBrains.TeamCity.Utils.Runtime.ProcessRun.RunWithCommandLine(PlatformVersion env, PlatformType platform, String assembly, String[] args) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\ProcessRun.cs:line 41
    at JetBrains.TeamCity.Utils.Runtime.RunInRuntime.ForkInRuntime(PlatformVersion version, PlatformType type, String executable, String[] args) in c:\BuildAgent\workf5b4bce579465c\src\Utils\src\Runtime\RunInRuntime.cs:line 50
    at JetBrains.TeamCity.NUnitCommon.PlugableRunFactory.RunProcessAsPlugable.Run() in c:\BuildAgent\workf5b4bce579465c\src\TestRunnerCommon\src\PlugableRunFactory.cs:line 33
    at JetBrains.BuildServer.NAntLoggers.NUnitLauncher2.ExecuteTasks(ITestRunArguments arguments, IPlugableTestRunner[] plugRuns) in c:\BuildAgent\workf5b4bce579465c\src\NUnitBootstrap\src\NUnitLauncher2.cs:line 136
    at JetBrains.BuildServer.NAntLoggers.NUnitLauncher2.Run2(String[] args) in c:\BuildAgent\workf5b4bce579465c\src\NUnitBootstrap\src\NUnitLauncher2.cs:line 114
    at JetBrains.BuildServer.NAntLoggers.NUnitLauncher2.Run(String[] args) in c:\BuildAgent\workf5b4bce579465c\src\NUnitBootstrap\src\NUnitLauncher2.cs:line 57
[18:31:27]Process exited with code -1
[18:31:27]Step Execute CodedUI Test (MSTest) failed

我已尝试授予 MSTest 文件夹所有可能的权限,但仍然无法正常工作。我可以从命令提示符运行 MSTest.exe,但不能通过 TeamCity。

对于其他遇到此问题的人,删除 teamcity 创建的 system.MSTest.xxx 参数,为我解决了这个问题。

我在尝试设置自定义 MSTest.exe 路径时遇到了同样的问题(因为 TeamCity 7 不支持 MS Test 2013)。事实证明,您必须提供 MSTest.exe 的完整路径,包括文件名。

所以不用

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\

你必须使用

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe

当然这只是一个示例,您可能需要根据您使用的 MS 测试版本进行更改。