与MSTest相比,NUnit的速度要快多少

Mat*_*att 8 performance nunit unit-testing mstest

罗伊Osherove,作者的艺术单元测试,已经评论在博客上说的很多东西NUnit的所谓做更好,这是快就是其中之一.

我的问题是,如果有的话,速度有多快?我们在谈论一个数量级吗?10%?50%?

我问这个是因为目前我无法比较这两者.我正在尝试将我的测试项目设置为双模式,以便我可以在它们之间切换.不幸的是,我遇到了NUnit与最新版本的Microsoft Moles集成的问题,并且NUnit与第三方库存在冲突(显示与log4net相关).

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

using Assert = NUnit.Framework.Assert;
using Is = NUnit.Framework.Is;
Run Code Online (Sandbox Code Playgroud)

但是......如果在NUnit中速度确实快得多,那么我宁愿使用它,尽管有痛点.

最后,VS2010的MSTest速度是否有任何提升

Mat*_*att 6

好吧,我花时间删除了Microsoft Moles和处理log4net相关问题的生产代码,以便我可以实际比较这两者.然后我在MSTest 2008和NUnit 2.5.2中运行了测试.

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

现在,NUnit肯定看起来更快的是单元测试运行之前的等待时间.当我将GUI(或控制台)连接到VS调试器并运行测试项目时,NUnit在测试可以执行之前启动和加载大约需要3-6秒.使用MSTest需要15-20秒.对于MSTest而言,如果只有一个测试或26个没关系,这个加载时间似乎是相同的.关于这些等待时间如何随着测试项目变大而扩展,比如在成千上万的单元测试中,我无法对差异做出评论,尽管我对此非常感兴趣.

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