63

在几年没有全职使用它之后,我又回到了更多的 .NET 中,我想知道这些天好的单元测试包是什么。

我对 NUnit 很熟悉(几年前),并且曾短暂地玩过IronRuby ,目标是让RSpec之类的东西继续运行,但除此之外我知道的不多。

我意识到我可以为此在谷歌上搜索并收工,但我相信在这里提出问题可能会得到更好、更明智的回应 :-)

建议?

4

11 回答 11

54

有这么多,太疯狂了。疯狂的好,我猜。

  • 对于保守的类型(我),NUnit仍然可用,而且功能仍然强大。
  • 对于 Microsoft 类型,MSTest就足够了,但与 NUnit 相比,它又慢又笨重。它还缺乏代码覆盖率,而无需为昂贵的 Visual Studio 版本支付大笔费用。
  • 还有MbUnit。它类似于 NUnit,但它具有诸如 RowTest(使用不同参数运行相同的测试)和 Rollback(将数据库放回原处,就像您在测试后找到它一样)这样的漂亮特性。
  • 最后,xUnit.net是带有某种态度的时尚选择。
  • 哦,TestDriven.NET将为您提供 NUnit 和 MbUnit 的 IDE 集成。

我相信他们都很好。不过,我会避开 MSTest,除非您只是享受将所有东西都放在一个开箱即用的 IDE 中的便利。

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

于 2008-08-05T02:15:24.873 回答
8

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

于 2008-08-06T16:07:06.083 回答
8

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

使用 NUnit + ReSharper 绝对是一种乐趣。

于 2008-08-14T15:09:17.867 回答
6

xUnit.net 看起来为 NUnit、MbUnit 和MSTest提供了一种稍微不同的方法,这很有趣。

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

于 2008-08-05T20:53:00.903 回答
6

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

MbUnit 的另一个不错的方面是它的语法几乎与 NUnit 相同,因此如果您在 NUnit 下已经有一个完整的测试平台,您可以直接切换引用而无需更改任何(非常?)代码。

于 2008-08-28T03:52:44.877 回答
5

我使用以下内容:

TestDriven.NET - Visual Studio 的单元测试插件

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

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

于 2008-10-15T14:33:01.073 回答
4

您可能会发现有趣的是,Gallio v3.1 现在通过IronRuby支持RSpec

于 2009-07-19T20:34:25.343 回答
3

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

请注意,Visual Studio 2008 Professional(及更高版本)现在带有集成的单元测试(它过去仅适用于 Team System 版本)并且可能适合您的需求。

于 2008-08-05T02:07:50.257 回答
2

我曾经使用过 NUnit,但我改用了MbUnit,因为它有更多的功能。

我喜欢行测试。它可以让你参数化你的测试。NUnit 确实有更好的工具支持。我正在使用 ReSharper 运行 MbUnit 测试。我在为 MbUnit 运行我的 SetUp 方法时遇到了 TestDriven.NET 的问题。

于 2008-08-06T21:03:00.167 回答
2

NUnit、MSTest 等都做几乎相同的事情。但是,我发现 NMock 不可或缺。

NMock 或任何模拟包都不是单元测试,但它使单元测试变得更加容易,它可能也是。

于 2008-08-14T15:04:08.673 回答
1

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

于 2008-08-05T00:57:48.773 回答