NUnit与MSTest相比有多快?

9
罗伊·奥舍罗夫(Roy Osherove)是《单元测试的艺术》(The Art Of Unit Testing)一书的作者,他在博客上评论道,尽管NUnit的很多功能都有所改进,但它比其他工具更快速。 我的问题是,如果有的话,有多快?我们是在说一个数量级吗?10%?50%? 我问这个问题是因为我目前无法比较两者。我正在尝试将我的测试项目设置为双模式,以便我可以在它们之间切换。不幸的是,我遇到了NUnit与最新版本的Microsoft Moles集成的问题,并且NUnit与第三方库产生冲突(似乎与log4net相关)

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

using Assert = NUnit.Framework.Assert;
using Is = NUnit.Framework.Is;

但是...如果NUnit的速度确实比较快,那么我宁愿使用它,尽管会有一些痛点。

最后,VS2010中的MSTest是否有任何速度改进

2个回答

7

我花时间移除了与log4net相关问题处理有关的Microsoft Moles和生产代码,以便我可以真正比较两者。然后我在MSTest 2008和NUnit 2.5.2中运行测试。

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

现在,NUnit无疑更快的是单元测试运行之前的等待时间。当我将GUI(或控制台)连接到VS Debugger并运行测试项目时,需要大约3-6秒钟才能启动和加载NUnit,然后测试才能执行。对于MSTest,需要15-20秒钟。对于MSTest来说,无论是1个测试还是26个测试,这个加载时间似乎都是相同的。至于这些等待时间如何随着测试项目变得越来越大而扩展,例如成千上万的单元测试,我无法评论差异,尽管我非常想知道。

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


2
我曾经使用过MSTest和NUnit(前者比后者更多),但我并没有注意到它们之间在速度方面有什么大的区别(别误会,差异可能存在,只是我没有注意到)。我选择MSTest的原因是它与Visual Studio的集成,这使得事情变得简单许多。此外,我曾经遇到过一些问题,因为NUnit测试运行在一个不同的线程应用程序中,而不是MSTests。

1
如果使用NUnit并且VS集成很重要,您可以使用测试运行器插件(例如TestDriven.NET和Resharper)在VS内运行单元测试。这不完全与仅适用于MSTest的内置测试运行器相同。但对于某些人来说,这可能是一个不错的解决方案。 - Jon Turner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接