首页 > 解决方案 > 如何对我的单元测试所做的事情进行“花式”报告

问题描述

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

[测试资源管理器提取物1

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

标签: unit-testingasp.net-corexunit.net

解决方案


你可以看看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. test2. 创建报告,最后,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 中的集成测试的博客文章,我(间接地)讨论了这个主题。你可以在这里查看我的博客: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/微软/天蓝色管道任务/问题/8291


推荐阅读