1

我正在将我的 azure 管道转换为 YAML 管道。当我触发构建时,它在单元测试步骤中失败并给出如下错误

[错误]vstest.console 进程在 90 秒后无法连接到 testhost 进程。这可能是由于机器速度慢,请设置环境变量 VSTEST_CONNECTION_TIMEOUT 以增加超时。

在此处输入图像描述

我找不到在任何地方添加 VSTEST_CONNECTION_TIMEOUT 值的方法。你能帮我解决这个问题吗?

这是我正在使用的示例 .yml

- task: VSTest@2
        displayName: 'Test'
        inputs:
            testAssemblyVer2: '**\bin\**\Tests.dll'
            testFiltercriteria: 'TestCategory=Unit'
            runSettingsFile: XYZ.Tests/codecoverage.runsettings
            codeCoverageEnabled: true
            platform: '$(BuildPlatform)'
            configuration: '$(BuildConfiguration)'
            diagnosticsEnabled: true
4

2 回答 2

0

我建议您改用 dotnetCli 任务。它更短、更清晰、更直接(它将具有与dotnet test在控制台中执行的“相同”效果)

- task: DotNetCoreCLI@2
  displayName: 'Run tests'
  inputs:
    command: 'test'

即使在microsoft 文档页面中,他们也使用 DotNetCoreCLI 任务。

于 2020-05-21T18:01:40.437 回答
0

如果 vstest 任务可以在您的经典管道上成功运行。它也应该在 yaml 管道中工作。您可以检查代理池选择和任务设置,以确保它们在 yaml 和经典管道中都相同。

1,您的单元测试似乎在 yaml 管道中的 Vs2017 上运行。您可以尝试在windows-latest代理上运行管道以在 Vs2019 上运行测试。

如果您的管道必须在特定代理上运行。您可以使用VisualStudioTestPlatformInstaller任务下载最新版本。然后设置vsTestVersion: toolsInstallerfor Vstest 任务。见下文:

- task: VisualStudioTestPlatformInstaller@1

- task: VSTest@2
  displayName: 'Test'
  inputs:
    testAssemblyVer2: '**\bin\**\Tests.dll'
    ...
    ...
    vsTestVersion: toolsInstaller

2,您也可以在此线程中查看解决方案。正如它在解决方案中提到的那样deleting the entire solution folder, re-cloning the project。如果您在自托管代理上运行管道。您可以尝试在 yaml 管道中使用Checkout来清理源文件夹,然后再克隆您的存储库。见下文:

steps:
- checkout: self 
  clean: true

您还可以尝试将以下内容添加到元素下的 codecoverage.runsettings 文件中,<CodeCoverage>以排除线程中提到的 microsoft 程序集。

<ModulePath>.*microsoft\.codeanalysis\.csharp\.dll$</ModulePath>
<ModulePath>.*microsoft\.codeanalysis\.csharp\.workspaces\.dll$</ModulePath>
<ModulePath>.*microsoft\.codeanalysis\.dll$</ModulePath>
<ModulePath>.*microsoft\.codeanalysis\.workspaces\.dll$</ModulePath>

3,您也可以尝试将“Microsoft.NET.Test.Sdk”更新到最新版本以进行测试项目。

于 2020-05-22T08:13:10.373 回答