Unit testing NUnit比MSTest快多少

Unit testing NUnit比MSTest快多少,unit-testing,nunit,performance,mstest,Unit Testing,Nunit,Performance,Mstest,《单元测试的艺术》一书的作者Roy Osherove在一个博客上说,在NUnit应该做得更好的许多事情中,更快是其中之一 我的问题是,如果有的话,要快多少?我们说的是一个数量级吗?10%? 50%? 我问这个问题是因为目前我无法比较两者。我正在尝试将我的测试项目设置为处于一个状态,以便可以在它们之间切换。不幸的是,我在NUnit与最新版本的Microsoft Moles集成时遇到了问题,而且 到目前为止,MSTest似乎更容易在VisualStudio2008中使用。NUnit的所有版本问题和兼

《单元测试的艺术》一书的作者Roy Osherove在一个博客上说,在NUnit应该做得更好的许多事情中,更快是其中之一

我的问题是,如果有的话,要快多少?我们说的是一个数量级吗?10%? 50%?

我问这个问题是因为目前我无法比较两者。我正在尝试将我的测试项目设置为处于一个状态,以便可以在它们之间切换。不幸的是,我在NUnit与最新版本的Microsoft Moles集成时遇到了问题,而且

到目前为止,MSTest似乎更容易在VisualStudio2008中使用。NUnit的所有版本问题和兼容性问题(至少对我来说)都在引导我选择MSTest作为项目的框架(尽管我可能保留双模式选项)。MSTest的另一个优点是,我仍然可以使用大部分NUnit断言:

using Assert = NUnit.Framework.Assert;
using Is = NUnit.Framework.Is;
但是。。。。如果NUnit的速度真的快得多,那么我更愿意使用它,尽管有一些痛点


最后,在VS2010中,MSTest的速度是否有所提高?

我使用了MSTest和NUnit(前者比后者多),我不能说我注意到两者在速度方面有任何大的差异(别误会,可能存在差异,我只是没有注意到)


我选择MSTest的原因是它与VisualStudio的集成,因为它使事情变得更简单。此外,有一次我在运行几个测试时遇到了一些问题,因为NUnit测试运行在与MSTests不同的线程装置中。

我花时间删除了Microsoft Moles和处理log4net相关问题的生产代码,以便我能够实际比较这两个问题。然后我在MSTest2008和NUnit2.5.2中运行了测试

我发现MSTest可以更好地报告每个单独测试的持续时间。如果NUnit中的测试速度足够快,则单击测试的属性时,它会在TestResults.xml文件和GUI中记录为0秒。尽管如此,我试图比较所有测试速度的总和,在某些情况下NUnit更快,而在其他情况下MSTest更快。当一个比另一个快时,它的速度大约是30%

现在,单元测试运行之前的等待时间似乎更快了。当我将GUI(或控制台)连接到VS调试器并运行测试项目时,NUnit启动和加载大约需要3-6秒,然后测试才能执行。使用MSTest,需要15-20秒。对于MSTest来说,无论只有1个测试还是26个测试,这个加载时间似乎是相同的。至于这些等待时间如何随着测试项目变得更大而扩展,比如说在数千个单元测试中,我不能评论它们之间的区别,尽管我很想知道


在测试运行时,MSTest中似乎也有一些延迟,可能是为了更新结果窗格。因此,我怀疑当人们说NUnit比MSTest快得多时,这是因为加载和更新延迟,但实际的测试执行时间似乎非常相似。

如果使用NUnit和VS集成很重要,可以使用测试运行程序插件(如TestDriven.NET和Resharper)从VS中运行单元测试与只使用MSTest的内置测试运行程序并不完全相同。但对于某些人来说,这可能是一个很好的解决方案。