如何制作一份 "fancy" 报告我的单元测试正在做什么

how to make a "fancy" report of what my unit tests are doing

我正在寻找一种方法来生成某种报告,描述我们正在为非技术人员进行的单元测试。类似于您可以在测试资源管理器中获得的视图,您可以在其中按特征对测试进行分组并为它们指定简单的名称,例如

[

我似乎找到的所有报告工具都与代码覆盖率有关,而且似乎都归结为这个工具 https://github.com/danielpalme/ReportGenerator 我们正在寻找可以集成到 devops 的东西,并且可以生成 html 报告作为人工制品,例如,可以作为构建的一部分使用。

你可以看看Coverlet。我将尝试布局如何让它在 azure devops 上运行:

  1. 将 Coverlet 包添加到您的测试项目:(如果您创建了一个 xunit 测试项目,它可能已经存在)
<PackageReference Include="coverlet.collector" Version="1.3.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
  1. 然后,对于 Az Devops 中的构建管道,您需要执行一些步骤:
  • 安装报告生成器 .NET CLI 工具(您提到的工具)**
# will install the tool locally at the current path
 - task: DotNetCoreCLI@2
    displayName: Install ReportGenerator tool
    inputs:
      command: custom
      custom: tool
      arguments: install --tool-path . dotnet-reportgenerator-globaltool

然后,在完成项目构建后,您需要 1。测试, 2.创建报告,最后,3。将它们发布到 az devops:


# instruct dotnet test to collect code coverage from your tests
# https://github.com/coverlet-coverage/coverlet#usage
  - task: DotNetCoreCLI@2
    displayName: Test
    inputs:
      command: test
      projects: 'tests/**/*.csproj'
      arguments: '-c $(buildConfiguration) --collect:"XPlat Code Coverage"'

# uses the reportgenerator dotnet tool to generate the Cobertura report type
  - script: ./reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(coverageReportDir) -reporttypes:"Cobertura"
    displayName: Create coverage reports

# publishes the Cobertura report to az devops
  - task: PublishCodeCoverageResults@1
    displayName: 'Publish code coverage'
    inputs:
      codeCoverageTool: Cobertura
      summaryFileLocation: $(coverageReportDir)/Cobertura.xml

如果一切顺利,在成功构建后,您应该会在 az devops 中看到:

点击它,您将转至包含覆盖率细分的报告:

您甚至可以向下钻取到单个文件并查看那里的行覆盖率:(您不确定,但我觉得这很有趣!)

我写了一篇关于 Azure DevOps 集成测试的博客 post,我在其中(间接地)谈论了这个主题。您可以在我的博客上查看:ASP.NET Core integration tests with docker-compose on Azure Pipelines

您可以在 GitHub

上查看完整代码(测试和 az devops yaml 管道)

最后你可以在这里看到一个测试运行:https://joaopgrassi.visualstudio.com/BlogApp/_build/results?buildId=46&view=codecoverage-tab

** 我将 .NET 工具安装在一个路径上而不是全局安装,因为我遇到了安装后未在 PATH 变量中设置该工具的问题:这是一个 GitHub 问题以及一些讨论: https://github.com/microsoft/azure-pipelines-tasks/issues/8291