C#代码覆盖率最有效的(免费)工具是什么?

11

Visual Studio C# Express 版本是一个适当的集成开发环境,用于编写 C# 代码;而 NUnit 则是编写单元测试的一个适当框架。然而,这种组合并不足以建立这些测试的代码覆盖率。

我知道专业版和旗舰版与 MSTest 集成,提供完全集成的代码覆盖率...但这限制了只有购买相关 IDE 的人才能进行覆盖验证,这并不理想。

我不担心将覆盖分析集成到 IDE 中...那是一种方法,但我同样可以接受批处理生成的报告......这可以集成到持续集成中。

我关注覆盖度量的质量——例如,我希望进行分支级别的覆盖分析,而不仅仅是每行代码的覆盖情况。

我设想 Visual Studio Professional/Ultimate 不是 Mono 环境下开发人员的理想解决方案......有人能告诉我在这种情况下通常使用什么吗?


对你来说不支付费用很重要吗?否则你还有更多选择,比如DotCover - http://www.jetbrains.com/dotcover/。 - christofr
为什么有人要对这个问题进行负评? - Vijay Gill
@Vijay,虽然我保护自己并说我没有投反对票;但我想是因为缺乏研究。这里已经有很多这种类型的问题了,谷歌上也有很多关于不同工具优点的文章可供搜索。=) - J. Steen
1
@J. Steen:我并没有指责任何人 :) 如果一个问题需要被踩,那么它应该被踩。我是这个社区的新成员,所以我正在学习这里的事情是如何进行的。 - Vijay Gill
@J. Steen:从未听说过那个鼠标悬停提示 :) 谢谢。 - Vijay Gill
显示剩余4条评论
4个回答

8

NCrunch非常酷。它会在您的代码左侧提供视觉指示,让您知道是否已覆盖以及其上的测试是否已通过。

http://www.ncrunch.net/


NCrunch看起来不错...非常感谢...然而 - 我不认为它适合我现在想要的,因为它只在测试期间免费...无论我采取什么策略,我都希望确保它能够持续多年... - aSteve
1
还有一个工具叫做连续测试(http://continuoustests.com/),它提供类似的功能。 - Shaun Wilde

5

OpenCover和PartCover是目前两个主要的工具。

PartCover是最古老的工具,在SourceForge上不再得到积极维护。对此实用程序的支持已经转移到GitHub (PartCover on GitHub)

OpenCover是较新的工具,也在GitHub上(OpenCover on GitHub),它支持64位和32位,并且克服了PartCover的一些限制(内存和结果传递)。

TypeMock支持这两种工具(我想很快会添加对OpenCover的支持,请参见Can Opencover be used with TypeMock Isolator?)

提供PartCover和OpenCover的报告可以使用ReportGenerator()


非常感谢!OpenCover看起来是一个真正的可能性 - 特别是因为它似乎比PartCover更有可能拥有广泛的分支覆盖支持。还要感谢您指出ReportGenerator...这非常有帮助。 - aSteve

1

PartCover

或者SharpDevelop?SharpDevelop是一款替代IDE,比VS的Express版本拥有更多功能。


非常感谢 - 我听说过SharpDevelop,但我认为它肯定比Visual Studio(Express)差很多。我一定会试试看...但我注意到它不能超越PartCover作为覆盖工具... - aSteve
我不理解你信息中“it doesn't take me beyond...”这部分的意思。SD是相当不错的IDE,我知道有些人使用它来开发商业应用程序,并从IDE中获得更好的单元测试/代码覆盖/版本控制集成。 - Vijay Gill
抱歉,我的表述可能不够清晰。我对SharpDevelop的表现印象深刻,正在考虑将其作为Visual Studio的替代品,而与代码覆盖率无关。 "take me beyond" PartCover是因为SD使用PartCover提供其代码覆盖功能...根据SourceForge的说法,最新的PartCover版本是2008年9月的2.2版...所以我怀疑它是否支持在C#4.0中引入并随Visual Studio 2010一起发布的功能。我希望能找到比那更为更新和得到积极支持的东西。 - aSteve
https://github.com/sawilde/partcover.net4 - 这个链接更加更新,也声称支持 .Net 4。 - Vijay Gill

0
我很惊讶没有人提到这一点,但是Visual Studio Team Edition附带了一个代码覆盖工具(它是Team Tools套件的一部分)。此外,当您在VS Team Edition中运行单元测试时,它会自动执行代码覆盖。 :)
因此,如果您已经拥有Team Edition,则可以说是免费的,但是Team Edition的成本当然要高一些。就是这样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接