通过 Cake 构建脚本报告 .NET Core XUnit 测试,以便 Azure DevOps 可以使用它

Report .NET Core XUnit tests through Cake build script so that Azure DevOps can use it

我正在尝试报告 Azure DevOps 中 .NET Core XUnit 项目的 XUnit 结果。构建过程是用 Cake Build 脚本编写的,该脚本由 Azure DevOps 构建管道调用。 XUnit 测试 运行,但它们仅向 CLI 报告最低限度。我想将摘要和详细信息写入文件:JSON、XML,这无关紧要。当前示例代码如下:

Task("UnitTests")
    .Does(() =>
    {
        DotNetCoreTest(
            testProject,
            new DotNetCoreTestSettings()
            {
                Configuration = configuration,
                NoBuild = true
            }
        );
    });

Powershell 脚本通过构建管道中的 Powershell 任务 运行 Cake 脚本。

我必须如何对 Cake 中的 运行 dotnetcoretest 进行操作才能使其报告为我可以使用 Azure DevOps 的格式和位置?我尝试使用“-xml”参数,但它不适用于 dotnet 测试。

我是否必须在 Azure DevOps 的构建管道中添加任务才能从 Cake 脚本中获取 XUnit 结果?

如何在 Azure DevOps 中查看 XUnit 测试?

您可以导出为 VSTest 格式

Task("UnitTests")
    .Does(() =>
    {
        DotNetCoreTest(
            testProject,
            new DotNetCoreTestSettings()
            {
                Configuration = configuration,
                NoBuild = true,
                NoRestore = true,
                ArgumentCustomization = args=>args.Append($"--logger trx;LogFileName=\"{testResultsFile}\"")
            }
        );
    });

然后您可以在 Azure DevOps 中添加类似的任务

YAML

    steps:
    - task: PublishTestResults@2
      displayName: 'Publish Test Results artifacts/**/test-results/*TestResults*.xml'
      inputs:
        testResultsFormat: VSTest
        testResultsFiles: 'artifacts/**/test-results/*TestResults*.xml'

设计师

蛋糕

或直接从 Cake 脚本使用 TFBuild.Commands.PublishTestResults(TFBuildPublishTestResultsData)

TFBuild.Commands.PublishTestResults(
    new TFBuildPublishTestResultsData {
        TestResultsFiles = new []{
            testResultsFile
        },
        TestRunner = TFTestRunnerType.VSTest
    }
)