MbUnit对阵Nunit

时间:2010-09-09 16:58:43

标签: unit-testing nunit mbunit

我读到MbUnit是针对类固醇的Nunit,但我不明白为什么。从我在这里读到的,我在这里说Nunit比MbUnit更受欢迎。其中一个主要原因是因为它具有流畅的界面。这是唯一的原因吗?

为什么我更喜欢MbUnit而不是Nunit,反之亦然?谢谢!

4 个答案:

答案 0 :(得分:14)

尽管NUnit现在包含了最受欢迎的MbUnit高级功能,但MbUnit仍然功能更丰富,例如:

Fluent接口可能不错,但通常它们不会添加任何新功能,它们只是以不同的方式向程序员提供内容。

NUnit更受欢迎,因为它首先存在(因此在网络上有更多关于它的文章,以及更好的工具),并且因为大多数程序员不关心或需要MbUnit提供的高级功能。

答案 1 :(得分:9)

NUnit是作为JUnit的一个端口开始的,并且已经存在了很长时间。 MBUnit事后发生了,它带来了“Generative”单元测试。这意味着它能够进行单个单元测试并从中生成多个单元。一种方法是[RowTest]属性。

如果典型的单元测试不带参数,RowTest将获取参数并从中生成多个测试。我相信NUnit现在也有RowTest的概念。

[Test]
[Row(1,1,2)]
[Row(2,2,4)]
[Row(1,2,3)]
public void X_plus_Y_equals_Z(x,y,z)
{
  Assert.AreEqual(z, x+y);
}

这将导致在测试运行器中运行3个测试。还有用于回滚数据库事务的功能。

NUnit具有流畅的断言界面,这很好,但不是真正的卖点。 NUnit可能还有一些更好的工具支持(Resharper的测试运行器开箱即用NUnit,但需要MBUnit的插件)。

最后,你应该选择一个框架并继续使用它。你所掌握的技能从一个框架到另一个框架都是非常便携的。

答案 2 :(得分:0)

对于那些从事研究的人来说只是一个注释:

来自MbUnit的网站:“Gallio和MbUnit目前处于中断状态。”

MbUnit GitHub帐户显示了一个非常稀疏的提交历史。

答案 3 :(得分:0)

仅适用于Re#6的MbUnit插件(没有任何多余的操作)。因此,如果您使用VS 2012或2013,则必须使用更新版的Re#,它支持NUnit开箱即用。

此外,似乎不再支持MbUnit和Gallio。