.NET的最佳单元测试框架是什么,为什么?[关闭]


26

在我看来,每个人都使用NUnit甚至不考虑其他选项。我认为这是因为:

  • 每个人都已经熟悉它,因此他们不必学习新的API。
  • 它已经与他们的持续集成服务器一起设置为可与NUnit一起使用。

我对此有错吗?

我决定最近在自己的一个项目中使用xUnit,我喜欢它!这对我来说意义非凡,从概念上讲,这似乎是NUnit向前迈出的明确一步。

我想听听有关哪个框架实际上是最佳框架的意见-无需考虑必须学习或重新配置自动化测试。


6
请定义最好的。最便宜的?最容易编码?每次测试最少的代码行?stackoverflow.com/questions/680298/…–
阿米尔·雷扎伊

抱歉,我的意思是最强大,最稳定,最直观。我要求的意见和理由,为什么。我将回答者的想象力设为“最佳”,因为我也想看看这些方面中哪些对人们很重要。
没人

2
如果您可以改写您的问题,那可能没问题,否则,这只是“ X列表”问题,没有建设性。参见有关建设性主观问题的六项准则
ChrisF

2
“最好”是一个愚蠢的问题-因为很少有一个最好的,部分是因为它取决于上下文,部分是因为它在某种程度上不可避免地是主观的。
Murph

10
墨菲 首先,该站点用于主观问题。其次,我要征求意见,所以我想看看别人对“最佳”的解释。而且不要叫我傻。
没人

Answers:


15

微软测试

我个人使用MSTest。NUnit确实很棒,但是在VS2010中,MSTest已经完全集成到IDE中,并且有完整的项目模板。对于.NET,如果您使用的是2010,那么我认为MSTest是唯一的代码覆盖范围,测试运行程序和其他可用工具(在VS2008中为MSTest,我认为还不能达到标准)盒子外面。(如果您使用CodeRush或R#,那么它们对于其他测试框架而言确实具有出色的测试运行器/工具)

编辑:从那以后我已经转移到XUnit。:D


我对MbUnit / Galio和这个答案都投了赞成票。MbUnit / Galio确实更好,但是在运行MsTest测试时,他们的双手束手无策,因为.Net库中的某些关键类是最终的,并且不能扩展。但是,如果必须进行GUI自动化,则已编码的UI和cuite.codeplex.com/documentation可以在MsTest上运行,因此只需使用它们即可。
工作

2
MSTest的问题是它本身不支持命令行测试,当您要通过CI运行单元时,这可能是个问题。
CmdrTallen 2014年

1
Nunit现在可以完全集成到VS中了吗?
BKSpurgeon'3

是的,是的。考虑到这已经有6年的历史了,我个人开始使用NUnit,然后再使用XUnit。两者(和其他)都有nuget包,它们充当适配器来点亮与MSTest相同的VS功能。老实说,此时MSTest可能位于列表的底部。我会投票XUnit或NUnit。这些天都是牢固,维护和现代的。
瑞安·海斯

14

几年前,我开始使用Gallio / MbUnit。而且它提供的功能和宝石是如此强大,以至于我从未后悔自己的选择。实际上,我现在是Gallio OSS项目开发团队的一员。因此我可以做出更大的贡献。

  • MbUnit具有许多强大的功能,这些功能使开发人员的工作变得更加轻松(合同验证程序,测试工厂,结构相等比较器,组合测试,数据生成框架,文本差异,xml断言,扩展点等)。
  • Gallio提供了一个一致的平台,可以使用出色的报告工具来运行我的所有测试。我也很喜欢我可以集成其他不使用MbUnit的OSS项目中的测试,而只是运行它们的事实。许多第三方工具之间的无缝集成也很方便(R#,PoSh,dotCover等),并且基础结构的可扩展性令人惊讶(例如,我刚刚完成了为本地非托管C ++测试框架编写测试适配器的工作) (将很快成为将来版本的一部分)

维基肯定是一个很好的起点,发现加利奥和MbUnit的V3。它仍然遗漏了一些章节,但是它已经非常有用了。


结构相等比较器和数据生成框架听起来很棒。MbUnit可以进行数据驱动的测试-即读取csv / xsd文件并将其用作测试方法参数吗?对我来说,这是xunit的主要吸引力之一。
没人

当然。ASAIK MbUnit是第一个引入数据驱动测试的.NET测试框架。它可以将测试参数仪绑定到内部([Row],[Column]等)和外部([CsvData],[XmlData]等)。此处有更多详细信息:gallio.org/wiki/doku.php?id=mbunit
Yann Trevin 2011年

他们是否解决了Gallio和Visual Studio遇到的性能问题?对我们来说是交易杀手。
Wyatt Barnett

我在一家小型公司工作时使用了MbUnit,这很棒!后来我使用了MsTest,因为我必须这样做,而且效果很好。我仍然更喜欢编写显式代码,而不是配置项目设置。公司的支持确实可以帮助MSTest。无论设计是丑陋的还是漂亮的,您都知道MSFT产生的任何结果都将得到很好的测试。
工作

@YannTrevin Gallio / MbUnit的状态如何?我查看了Google Code存储库,它似乎没有任何最新更改。开发发生在其他地方还是项目被拖延了?
Wesley Wiser

9

选择一个并使用它可能是这里最重要的步骤。

我个人出于某些原因会选择NUnit。首先是工具支持。有一个免费的Visual Studio 2010加载项,所有主要的第三方插件都支持它。每个构建系统,测试覆盖率实用程序和CI服务器都支持它。在许多情况下,没有插件。在代码级别,它可以只处理大约在这一点上的任何场景-数据驱动测试,继承,抽象测试类,通用测试类,安装,拆除等在一定程度上,我们有xUnit的,因为NUnit的有太丰富的功能和强大。

除了NUnit之外,我认为您可以像Yann所说的那样对MBUnit + Gallio提出一个相当不错的论据-这是一个非常坚实的框架。您应该避免的就是MSTest,它有一些致命的缺陷恕我直言。缺陷是测试类的一些约束,例如没有继承以及对专业或更好的Visual Studio SKU的依赖。包括要求将Visual Studio安装在构建服务器上才能运行测试。


0

原因之一是NUNIT变得比xUnit更行业标准。但就我个人而言,我喜欢xunit。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.