如何制作一份 "fancy" 报告我的单元测试正在做什么
how to make a "fancy" report of what my unit tests are doing
我正在寻找一种方法来生成某种报告,描述我们正在为非技术人员进行的单元测试。类似于您可以在测试资源管理器中获得的视图,您可以在其中按特征对测试进行分组并为它们指定简单的名称,例如
[
我似乎找到的所有报告工具都与代码覆盖率有关,而且似乎都归结为这个工具 https://github.com/danielpalme/ReportGenerator
我们正在寻找可以集成到 devops 的东西,并且可以生成 html 报告作为人工制品,例如,可以作为构建的一部分使用。
你可以看看Coverlet。我将尝试布局如何让它在 azure devops 上运行:
- 将 Coverlet 包添加到您的测试项目:(如果您创建了一个 xunit 测试项目,它可能已经存在)
<PackageReference Include="coverlet.collector" Version="1.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
- 然后,对于 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
我正在寻找一种方法来生成某种报告,描述我们正在为非技术人员进行的单元测试。类似于您可以在测试资源管理器中获得的视图,您可以在其中按特征对测试进行分组并为它们指定简单的名称,例如
[
我似乎找到的所有报告工具都与代码覆盖率有关,而且似乎都归结为这个工具 https://github.com/danielpalme/ReportGenerator 我们正在寻找可以集成到 devops 的东西,并且可以生成 html 报告作为人工制品,例如,可以作为构建的一部分使用。
你可以看看Coverlet。我将尝试布局如何让它在 azure devops 上运行:
- 将 Coverlet 包添加到您的测试项目:(如果您创建了一个 xunit 测试项目,它可能已经存在)
<PackageReference Include="coverlet.collector" Version="1.3.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
- 然后,对于 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