如何将单元测试失败消息显示为 .Net Core 中的构建错误?

mar*_*ark 5 unit-testing azure-devops azure-pipelines azure-pipelines-yaml

我们使用 dotnet test --no-build 在 PR/CI 构建期间运行单元测试:

- task: DotNetCoreCLI@2
  ${{ if eq(parameters.shortName, '') }}:
    displayName: "Test ${{ parameters.name }}"
  ${{ if ne(parameters.shortName, '') }}:
    displayName: "Test ${{ parameters.shortName }}"
  inputs:
    command: "test"
    projects: ${{ parameters.path }}
    ${{ if eq(parameters.testFilter, '') }}:
      arguments: $(TestBinLogArg) -c $(BuildConfiguration) --no-build ${{ parameters.commonFlags }} ${{ parameters.moreTestArgs }} --filter ${{ parameters.unitTestFilter }}
    ${{ if ne(parameters.testFilter, '') }}:
      arguments: $(TestBinLogArg) -c $(BuildConfiguration) --no-build ${{ parameters.commonFlags }} ${{ parameters.moreTestArgs }} --filter (${{ parameters.unitTestFilter }})&(${{ parameters.testFilter }})
    publishTestResults: ${{ parameters.publishTestResults }} 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我们使用标准的 Azure DevOps 任务DotNetCoreCLI@2来运行我们的单元测试。典型的命令行是:

"C:\Program Files\dotnet\dotnet.exe" test D:\_wf\01\3\s\DataSvc.sln --logger trx --results-directory D:\_wf\01\_temp -c Debug --no-build /p:OutDir=D:\_wf\01\3\b --filter TestCategory!=NoPR|TestCategory=L0

Run Code Online (Sandbox Code Playgroud)

问题是单元测试失败消息不会作为构建错误出现: 在此输入图像描述

是的,我们可以在页面的“测试”选项卡或构建日志中看到测试失败,但我想在构建摘要页面本身中看到它们,就像我们在使用任务时看到编译错误一样MSBuild@1(但同样不是DotNetCoreCLI@2 build

我们用于NUnit我们的测试。有任何想法吗?

Kir*_*kov 0

dotnet test 目前与 MSBuild 的集成不是很紧密。

团队成员在本期讨论了这个问题: https://github.com/microsoft/vstest/issues/2953#issuecomment-868368159

nohwnd也许可以更好地解释。