我们的同事Scott Hanselman继续研究.NET Core中的测试和代码覆盖率。 他已经设法讨论了一些可以提高测试质量的工具,而今天他又谈论了另一
件事 :
AltCover 。 看猫下!
我把地板交给斯科特·汉瑟曼 。
这星期早些时候,我回顾了床罩 。 还有一个受人尊敬的OpenCover工具和一些有趣的项目 , 这些项目试图使OpenCover与.NET Core一起使用,但只能在Windows上使用。
今天,我将学习AltCover Steve Gilham。 存在覆盖率检测工具,它们在运行时使用.NET Profiling API。 相比之下,AltCover对此表示IL 。
顾名思义,这是覆盖的替代方法。 它没有在运行时通过.NET分析API,而是向执行构建之前添加了相同的额外IL。 这意味着只要执行过程有权修改结果文件,它就几乎可以在任何平台上的任何地方工作。 您可以将用于仪器的各种平台与经过测试的平台结合起来。
AltCover不仅是NuGet软件包的一部分,而且还作为.NET Core全局工具的一部分提供,这真是太好了。
dotnet tool install --global altcover.global
这使您可以在任何地方使用altcover命令,而无需将其添加到项目中。
不过,我将
通读AltCover快速设置指南,并了解我能做到多快!
我将其安装在我的测试项目hanselminutes.core.tests中,
dotnet add package AltCover
然后我将其启动。
dotnet test /p:AltCover=true
太好了 我的测试照常运行,但是现在我在test文件夹中有test.xml文件。 如果需要,我还可以生成LCov或Cobertura报告。 现在,coverage.xml文件的重量几乎为一半! 它包含许多有用的信息,但是我如何以可读的形式查看结果?

该文件采用OpenCover XML格式,因此我可以为该覆盖率文件运行
ReportGenerator并获取一大堆HTML文件。 实际上,整个小型覆盖站点!
我下载了ReportGenerator并将其放在单独的文件夹中(这是.NET Core全局工具的最佳解决方案)。
c:\ReportGenerator\ReportGenerator.exe -reports:coverage.xml -targetdir:./coverage
确保使用良好的targetDir,否则在项目文件夹中将获得许多不必要的HTML文件。 还值得考虑为所得的文件夹和coverage文件设置.gitignoring。 打开index.htm并对所有有用信息进行评分!

查看上面的风险热点! 我有一个具有显着的
NPath复杂度的CustomPageHandler和两个具有显着的
循环复杂度的视图。
还要按照覆盖率报告结果中的指示评估出色的轨道覆盖率。 您可能会注意到EnableAutoLinks一直都是正确的,因此我只检查了一种方法。 也许我会在这里进行阴性测试,看看如果EnableAutoLinks为false,是否有任何副作用。
阅读完整的AltCover教程 。 有多种方法可以运行此工具,从全局工具全局工具,dotnet测试,MSBuild任务到与PowerShell集成!
- 有关使用示例, 请单击此处 。
- 要查看操作模式, 请单击此处 。
- 要从dotnet测试运行AltCover,请转到dotnet测试集成。
- 要从MSBuild运行AltCover, 请转到此处 。
- 要启动AltCover及其相关的Windows PowerShell或PowerShell Core工具, 请转到此处 。
这里有很多很好的例子,我花了10分钟才用AltCover和.NET Core获得出色的覆盖率报告。 感谢AltCover的Steve! 访问
github.com/SteveGilham/altcover给他一个星号,报告文件问题或提供帮助! 最重要的是,与朋友和同事共享这样的开源项目。