.NET单元测试包?

在几年的全职使用之后回到更多的.NET中,并且想知道现在的单元测试包是什么。

我对NUnit很熟悉(几年前),并且与IronRuby一起玩过一段时间,其目标是获得类似rspec的内容,但除此之外不太了解。

我意识到我可以谷歌这一点,并称它为一天,但我相信我可能会得到一个更好,更明智的答复在这里问一个问题:-)

建议?

0
额外 编辑
意见: 1
哇,这是一个令人难以置信的有用的问题,有很多upvotes的问题没有被“封闭,没有建设性”......这个有趣的警察肯定已经睡着了,
额外 作者 Jonah,

11 答案

xUnit.net看起来像提供了一种与N / MB / MS / Unit稍有不同的方法,这很有趣。

在我寻找类似rspec的解决方案(因为我喜欢rspec)时,我也遇到了 NSpec ,看起来有点罗嗦,但与 NSpec扩展插件结合使用C# 3种扩展方法,看起来相当不错。

0
额外
你可能想看看这个NSpec( nspec.org )。这与RSpec几乎相同。
额外 作者 Amir,

我喜欢 MbUnit ,呃,加里奥。对我来说最重要的是在Visual Studio中有很好的工具支持。为此,我使用 Resharper ,它有一个 MbUnit测试跑步者。很多人似乎都喜欢 TestDriven.NET 作为他们的测试跑步者。

0
额外

有这么多这是疯了。我想,疯狂的好。

  • 对于保守类型(我), NUnit 仍然可用且仍然存在超过能力。
  • 对于Microsoft类型,请 MSTest 是足够的,但与Nunit相比,缓慢而笨重。它也缺乏代码覆盖率,而无需花费大量费用来购买价格昂贵的Visual Studio版本。
  • 还有 MbUnit 。它就像NUnit一样,但具有像RowTest这样漂亮的功能(使用不同的参数运行相同的测试)和回滚(将数据库放回来,就像在测试后发现它一样)
  • 最后,对于某种态度, xUnit.net 是时尚选择
  • 哦, TestDriven.NET 将为您提供Nunit和MBunit的IDE集成

我相信他们都很好。尽管如此,我会避开MSTest,除非您只是享受在一个IDE中开箱即用的便利。

Scott Hanselman has a podcast on this very topic.

0
额外
是的,NUnit 2.5通过[TestCase]属性具有RowTest功能。
额外 作者 Richard Szalay,
+1,注意NUnit 2.5具有很好的RowTest功能,还有对参数的组合测试等等。
额外 作者 user7116,
如果你问我,MSTest和NUnit的区别并不大。它主要归结为首选语法,如果您使用支持MSTest的TesteDriven.Net,则性能几乎相同。
额外 作者 Kjetil Klaussen,

我曾经使用NUnit,但由于它具有更多功能,因此我切换到了MbUnit。我喜欢RowTest。它可以让你参数化你的测试。 NUnit确实有更好的工具支持。我正在使用ReSharper来运行MbUnit测试。 TestDriven.NET运行我的设置方法MbUnit有问题。

0
额外

我喜欢 TestDriven.NET (尽管我使用ReSharper),并且我对< a href =“http://www.codeplex.com/xunit”rel =“nofollow noreferrer”> XUnit.net 。它使用事实而不是许多人不喜欢的测试,但我喜欢术语上的差异。想一想关于软件的可自动证实的事实集合,并查看您在更改时违反了哪些事实是有用的。

请注意,(它以前只能用于Team System版本),可能适合您的需求。

0
额外

坚持NUnit。不要去MSTest附近的任何地方。

NUnit + ReSharper是一个绝对的喜悦与合作。

0
额外
我也遇到过MS测试“跑步者”的各种错误。基本上VS会让它在后台运行,并且在某些情况下,10分钟前运行的测试会干扰您即将运行的测试:-(
额外 作者 Orion Edwards,
嗨Kjetil。主要有三个原因。 1. MS测试创建的元数据。为什么?反映像NUnit。测试运动员是可怕的。 NUnit做得更好 - 为什么要改变。我做了一段时间,但后来改变了。
额外 作者 Iain Holder,
为什么你应该从MSTest中拿走?如果你真的想分享为什么你想逃避它,我会很感激。 R#也可以和MSTest一起工作(使用Gallio插件)。
额外 作者 Kjetil Klaussen,

这实际上是我个人的观点(我认为这是多余的,因为它是一个论坛)。 NUnit,MSTest等都做得相当不错。不过我觉得NMock是不可或缺的。

NMock或任何嘲讽包都不是单元测试,但它使得单元测试变得轻而易举。

0
额外

我们在这里使用NUnit和 MBUnit 。我们使用 TestDriven.NET 在Visual Studio中运行单元测试。我们使用优秀的,强烈推荐的 RhinoMocks 作为模拟框架。

0
额外

I have made a small example of testing a .net lib using ironRuby: http://khebbie.dk/post/2008/08/Example-of-using-ironRubys-mini_rspec-library.aspx

0
额外
感谢那。我实际上已经广泛地玩过这个。不幸的是,IronRuby不能够运行完整的rspec,只有mspec,这是更多的减少。即使如此,它比nunit / etc更好:-)
额外 作者 Orion Edwards,

我曾经使用过NUnit,但现在倾向于使用MbUnit,它有两个关键特性: 1. RowTest功能可以让您轻松地对不同的参数组进行相同的测试,如果您确实需要全面覆盖,这一点非常重要。 2.回滚功能允许您在每次测试之后回滚更改时针对数据库运行测试,并且每次都使数据库处于完全相同的状态。这与添加[Rollback]属性一样简单。

MbUnit的另一个好方面是它的语法几乎和NUnit相同,所以如果NUnit下已经有了一个完整的测试平台,那么你可以在不需要更改任何(非常多)代码的情况下关闭引用。

0
额外

这是一个古老的问题,但您可能会发现Gallio v3.1现在通过IronRuby支持RSpec,这一点很有趣。

0
额外