unit-testing - 如何对我的单元测试所做的事情进行“花式”报告
问题描述
我正在寻找一种生成某种报告的方法,该报告描述了我们正在为非技术人员制作的单元测试类型。类似于您可以在测试资源管理器中获得的视图,您可以在其中按特征对测试进行分组并给它们简单的名称,例如
[
我似乎找到的所有报告工具都与代码覆盖率有关,这一切似乎都归结为这个工具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. test,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 中的集成测试的博客文章,我(间接地)讨论了这个主题。你可以在这里查看我的博客: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
推荐阅读
- kdb - kdb 表中的模糊查询
- python - 使用 selenium 进行 Python 网页抓取:在模式框中找到一个元素并下载它 - 循环中
- caching - 远程模式下对 JBoss 数据网格的 JTA 事务支持
- css - 使用 CSS Grid 的父 div 的跨度宽度
- r - 贝叶斯元分析 t 检验 - 混合一样本和二样本 (BayesFactor)
- javascript - 使用jquery表单和laravel的文件进度条
- sql - 如何在 Redshift 中存储一组字符串?
- c++ - 如何检测 unordered_map 向量中的重复项?
- css - 在 wordpress 中更改顶部菜单颜色
- regex - 如何从顶点中的字符串中删除单行和多行注释