devops VSTest@2: ##[错误]找不到测试主机

Tom*_*Tom 3 nunit mstest devops azure-devops azure-pipelines-yaml

我们正在使用 DevOps 来构建我们的 .net 4.7.2 应用程序。作为其中的一部分,我们正在运行使用 nunit 框架和测试运行器的单元测试。

它已经正常运行了大约 18 个月,但在最后一天刚刚停止工作:(

它使用标准模板来运行测试,如下所示:

      - task: VSTest@2
        displayName: "Running tests"
        inputs:
          testSelector: 'testAssemblies'
          testAssemblyVer2: |
              **\*test*.dll
              !**\*TestAdapter.dll
              !**\obj\**
          searchFolder: '$(System.DefaultWorkingDirectory)'
Run Code Online (Sandbox Code Playgroud)

但是,现在该步骤失败并显示以下日志:

NUnit 适配器 4.2.0.0:测试执行开始运行 D:\a\1\s\Configuration.Tests\bin\Release\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 中的所有测试 NUnit3TestExecutor 使用 Current Discovery 发现 0 个 NUnit 测试用例中的 0 个模式,显式运行 运行 D:\a\1\s\Configuration.Tests\bin\Release\testcentric.engine.metadata.dll 中的所有测试 NUnit3TestExecutor 使用当前发现模式发现 0 个 NUnit 测试用例中的 0 个,显式运行 运行所有测试在 D:\a\1\s\Api.Tests\bin\Release\testcentric.engine.metadata.dll 中,NUnit3TestExecutor 使用当前发现模式发现了 0 个 NUnit 测试用例中的 0 个,显式运行 在 D:\a\1 中运行所有测试\s\CommunicationTests\bin\Release\testcentric.engine.metadata.dll NUnit3TestExecutor 使用当前发现模式发现 0 个 NUnit 测试用例中的 0 个,显式运行 运行 D:\a\1\s\Domain.Tests\bin\ 中的所有测试Release\testcentric.engine.metadata.dll NUnit3TestExecutor 使用当前发现模式发现了 0 个 NUnit 测试用例,显式运行 在 D:\a\1\s\packages\NUnit3TestAdapter.4.2.1\build\net35\testcentric 中运行所有测试.engine.metadata.dll NUnit3TestExecutor 使用当前发现模式发现 0 个 NUnit 测试用例中的 0 个,显式运行 NUnit 适配器 4.2.0.0:测试执行完成 D:\a\1\s\Configuration.Tests\bin\ 中没有可用的测试Release\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll D:\a\1\s\Configuration.Tests\bin\Release\testcentric.engine.metadata.dll D:\a\1\s\Api.Tests\bin\ Release\testcentric.engine.metadata.dll D:\a\1\s\CommunicationTests\bin\Release\testcentric.engine.metadata.dll D:\a\1\s\Domain.Tests\bin\Release\testcentric。 engine.metadata.dll D:\a\1\s\packages\NUnit3TestAdapter.4.2.1\build\net35\testcentric.engine.metadata.dll。确保测试发现者和执行者已注册,并且平台和框架版本设置合适,然后重试。##[错误]找不到测试主机结果文件:D:\a_temp\TestResults\VssAdministrator_WIN-FVJ4KUK6IFI_2022-08-18_12_38_44.trx ##[​​错误]测试运行中止。测试总数:未知 通过:110 总时间:16.7203 秒 Vstest.console.exe 退出,代码为 1。**************** 已完成测试执行 ********* ************ 测试结果文件:D:\a_temp\TestResults\VssAdministrator_WIN-FVJ4KUK6IFI_2022-08-18_12_38_44.trx 创建测试运行:1080 发布测试结果:112 将测试结果发布到测试运行'1080 '。TestResults To Publish 112,测试运行 ID:1080 测试结果发布 112,剩余:0。测试运行 ID:1080 已发布测试结果:112 发布附件:1 执行结果代码 1 非零,检查失败结果已完成 TestExecution 模型.. .##[警告]Vstest 因错误而失败。检查日志是否有失败。可能会有失败的测试。##[错误]错误:进程“D:\a_tasks\VSTest_ef087383-ee5e-42c7-9a53-ab56c98420f9\2.205.0\Modules\DTAExecutionHost.exe”失败,退出代码为 1 ##[错误]Vstest 失败,出现错误。检查日志是否有失败。可能会有失败的测试。

查看此日志,似乎 nunit 测试已成功运行,但它可能正在尝试运行 mstests?当 DevOps 获得更新并破坏工作管道时,这是令人沮丧的。

小智 7

我们也有类似的情况。

单元测试使用 xUnit 运行。

/TestAdapterPath:"D:\a\1\s" 正在开始执行测试,请稍候... 共有 36 个测试文件与指定模式匹配。2.4828

##[错误]找不到测试主机

数据收集器“代码覆盖率”消息:没有可用的代码覆盖率数据。探查器未初始化..2.0273

##[错误]找不到测试主机

数据收集器“代码覆盖率”消息:没有可用的代码覆盖率数据。探查器未初始化..2.3746

##[错误]找不到测试主机

数据收集器“代码覆盖率”消息:没有可用的代码覆盖率数据。探查器未初始化..1.992

##[错误]找不到测试主机

数据收集器“代码覆盖率”消息:没有可用的代码覆盖率数据。Profiler 未初始化.. 4.8409 ##[错误]找不到测试主机

数据收集器“代码覆盖率”消息:没有可用的代码覆盖率数据。Profiler 未初始化.. 2.1874 ##[错误]找不到测试主机

我比较了成功运行和失败运行的输出,发现测试平台的版本不同。如果您不指定版本,则默认版本将是最新版本,并且可能是预览版。所以我在 YAML 中添加一些内容来指定一个可行的版本。

- task: VisualStudioTestPlatformInstaller@1
  inputs:
    versionSelector: 'SpecificVersion'
    testPlatformVersion: '17.2.0'
- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    codeCoverageEnabled: True
    vsTestVersion: 'toolsInstaller'
Run Code Online (Sandbox Code Playgroud)

https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/test/vstest?view=azure-devops https://learn.microsoft.com/en-us/azure/devops/pipelines /tasks/tool/vstest-platform-tool-installer?view=azure-devops