代码覆盖率:如何提高测试质量

我们的同事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集成!


这里有很多很好的例子,我花了10分钟才用AltCover和.NET Core获得出色的覆盖率报告。 感谢AltCover的Steve! 访问github.com/SteveGilham/altcover给他一个星号,报告文件问题或提供帮助! 最重要的是,与朋友和同事共享这样的开源项目。

Source: https://habr.com/ru/post/zh-CN418517/


All Articles