MbUnit对阵Nunit

Xai*_*oft 12 mbunit nunit unit-testing

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

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

Mau*_*fer 15

即使NUnit现在包含最流行的MbUnit高级功能,MbUnit仍然功能更丰富,例如:

流畅的界面可能不错,但通常它们不会添加任何新功能,它们只是以不同的方式向程序员提供内容.

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


Ner*_*ury 10

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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 我不会在这里发布任何答案,因为我积极参与其中一个项目,我的观点有偏见.但我想提一下,[Row]并不是在MbUnit中进行数据驱动测试的唯一方法.还有其他一些方便的数据源属性(http://gallio.org/wiki/doku.php?id=mbunit:da​​ta-driven_testing),例如[Column]和[Factory]等等. (2认同)