.NET单元测试包?

时间:2008-08-05 00:51:49

标签: c# .net unit-testing testing

在几年没有全时使用它之后再回到.NET,并想知道现在好的单元测试包是什么。

我对NUnit很熟悉(几年前),并且曾经与IronRuby进行过简短的比赛,其目标是获得像rspec这样的东西,但除此之外我不知道。

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

建议?

12 个答案:

答案 0 :(得分:52)

有太多它疯了。我猜是疯狂的好。

  • 对于保守类型(我),NUnit仍然可用,而且还能胜任。
  • 对于Microsoft类型,MSTest足够,但与Nunit相比,速度慢且笨重。它还缺乏代码覆盖率而无需花费昂贵的Visual Studio版本。
  • 还有MbUnit。它就像NUnit,但具有漂亮的功能,如RowTest(使用不同的参数运行相同的测试)和Rollback(将数据库放回原来,就像你在测试后发现的那样)
  • 最后,xUnit.net是一种时髦的选择,有一些态度。
  • 哦,TestDriven.NET将为Nunit和MBunit提供IDE集成。

我相信他们一切都很好。我会远离MSTest,除非你只是享受开箱即用的所有东西的便利。

Scott Hanselman有关于这个主题的播客。

答案 1 :(得分:8)

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

答案 2 :(得分:8)

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

NUnit + ReSharper是一个绝对的快乐。

答案 3 :(得分:6)

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

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

答案 4 :(得分:6)

我以前使用NUnit,但现在倾向于使用MbUnit,有两个关键功能: 1. RowTest功能允许您轻松地在不同的参数集上运行相同的测试,这对于您真正需要全面覆盖非常重要。 2.回滚功能允许您在每次测试后回滚更改时对数据库运行测试,每次都使数据库保持完全相同的状态。它就像添加[Rollback]属性一样简单。

MbUnit的另一个不错的方面是它的语法几乎与NUnit完全相同,所以如果你在NUnit下已经有一个完整的测试床,你可以在不需要更改任何内容的情况下切换引用(非常多?)代码。

答案 5 :(得分:5)

我使用以下内容:

TestDriven.NET - 为Visual Studio添加单元测试

Typemock Isolator - .Net单元测试的模拟框架

NUnit - C#中的开源单元测试框架。

答案 6 :(得分:4)

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

答案 7 :(得分:3)

我喜欢TestDriven.NET(即使我使用ReSharper),我对XUnit.net非常满意。它使用事实代替许多人不喜欢的测试,但我喜欢术语上的差异。考虑一系列关于您的软件的可自动证明的事实并查看您在进行更改时违反哪些事件是很有用的。

请注意Visual Studio 2008 Professional (and above) now comes with integrated Unit Testing(过去仅适用于Team System Editions)并且可能适合您的需要。

答案 8 :(得分:3)

我做了一个使用ironRuby测试.net lib的小例子: http://khebbie.dk/post/2008/08/Example-of-using-ironRubys-mini_rspec-library.aspx

答案 9 :(得分:2)

我曾经使用过NUnit,但我切换到MbUnit,因为它有更多的功能。我喜欢RowTest。它允许您参数化您的测试。 NUnit确实有更好的工具支持。我正在使用ReSharper来运行MbUnit测试。我在使用TestDriven.NET运行MbUnit的SetUp方法时遇到了问题。

答案 10 :(得分:2)

这真的是我个人的意见(我认为这是多余的,因为它是一个论坛)。 NUnit,MSTest等都做了相同的事情。但是我觉得NMock不可或缺。

NMock或任何模拟软件包都不是单元测试,但它使单元测试变得更加容易,而且它也很简单。

答案 11 :(得分:1)

我喜欢MbUnit,呃,Gallio。对我来说最重要的是在Visual Studio中提供良好的工具支持。为此,我使用了Resharper,其MbUnit test runner。很多人似乎也喜欢TestDriven.NET作为他们的测试运行员。