NUnit vs Visual Studio 2010的MSTest?

我意识到在2008年之前,有许多针对NUnit v MSTest 版Visual Studio的常见问题(比如这个 )。

微软在第三个版本中有正确的事情。 对于MSTest,这是VS2010。

他们是用MSTest做的吗? 你会使用它在一个新的项目,而不是NUnit?

我的具体问题是:

  • 速度
  • 在CruiseControl.NET中运行testing(命令行或MSBuild任务)
  • 来自CC.NET的代码覆盖率报告
  • 你可以在debugging模式下运行MSTesttesting吗?

(我们使用ReSharper,所以testing者对我们来说不是问题,过去几年我们使用了NUnit,我们没有TFS。)

  • 列表项速度是相同的,但MsTest可能会慢一点,因为它每次创buildtesting运行的文件夹
  • MSBuid和CC.Net是很大的痛苦。 你不能在没有VS的计算机上运行MSTest(不是100年左右,但2008年是这样)
  • 不知道,对不起
  • 是的,你可以从视觉工作室

我的build议如下:如果NUnit满足你 – 使用它,忘记MSTest

纠正线上的一些旧信息;

  1. 有可能在2010年运行64位testing
  2. 从VS2008转发是没有必要的MSTEST创build目录和op二进制文件,只是禁用部署,在2010年这是默认的,但你必须在2008年
  3. 2010 MSTEST速度更快,但是由于其运行负载/ Web / UItesting的通用testing框架在devise上也有所妥协,会导致速度变慢。 Jamie Cansdale似乎已经设法通过TestDriven.net对MSTEST的支持的最新版本来获得性能提升

我主要使用NUnit,一些xUnit和一些MSTest。 他们似乎function相当,但我不喜欢MSTesttesting亚军。 它运行在视觉工作室,所以它要么拥挤在屏幕上,要么就在另一台显示器上。 (我在另一台显示器上运行NUnit,但是每当我关注Visual Studio时,它并不包括该显示器上的所有内容)。 它需要太多的点击来找出哪些testing失败,为什么。

NUnit可以在后台运行,直到testing失败,此时它会显示关于中断testing的信息。 这似乎是保持红/绿/重构顺利进行的理想select。

不。 有关应用程序域和程序集parsing的相同问题仍然存在。 我会避免,除非你想要其他functiontesting或与团队系统集成的新的善良。

我对CruseControl.net了解不多,但可以debuggingtesting。 我们目前也不使用TFS,而MSTest正在为我们工作。

如果您认为您将以64位模式运行testing,请使用NUnit。 MsTest只是x86。

两者之间的一个主要区别在于,MSTest每次运行testing时都会复制当前的DLL。 如果你正在做TDD并频繁地运行你的testing,这可能会吃掉很多的硬盘空间。

如果您正在使用MSTest,则可以在工具>选项>testing工具>testing执行中更改此设置。 在Visual Studio 2010中,“限制旧的testing结果的数量”默认设置为25。我通常将其更改为1。

MSUnit在与实际执行环境不同的条件下运行testing用例。 具体而言,部署的文件与运行实际项目时部署的文件不同。 尽pipe如此,还有[DeploymentItem] -Attribute来指定MSUnit应该部署哪些文件。 所以如果你的应用程序依赖于任何外部文件,比如

  • 数据库文件
  • 数据库configuration文件
  • 应用configuration文件

那么MSUnit并不是正确的select,因为MSUnittesting从未涵盖您的文件系统在执行环境中的样子。 用于部署文件(总是复制,内容等)的Visual Studio项目文件设置被MSUnit运行器忽略。 所以这些设置不能被testing。