今天,Visual Studio 2010中的unit testing有哪些首选选项?

我是TDD的新手,正在研究我的Visual Studio 2010解决方案的unit testing选项。 这个解决方案是一个MVC3 Web应用程序,我正在尝试将DDD与IoC,存储库和工作单元格一起使用。 它还使用EF4和EF4 POCO模板。 (我试图从微软N层应用程序中模拟大部分内容,同时借用其他几个博客的设计模式)。

我一直在搜索和阅读这个问题几个小时,而且我发现在任何地方我都发现了相互矛盾的信息。 其中很大一部分原因是由于旧的结果出现以及Visual Studio 2010的不断发展的选项。

我知道有几种选择,但同样,我很难从较新的选项中辨别出过时的选项,并且人们使用的引用中存在一些含糊之处。 即使是这里的热门讨论也有一些陈旧/含糊/冲突的信息。

例如:

  1. MSTest , Visual Studiounit testing框架和Microsoft.VisualStudio.TestTools.UnitTesting之间有区别吗? 如果是这样,什么? 看来这些是不同的,但在我看过的一些讨论中却被错误地引用了。

  2. 由于NUnit的作者也创作了xUnit,这是否意味着xUnit取代了NUnit,因此不推荐使用NUnit? 似乎有些人,甚至今天,更喜欢NUnit。 但是如果NUnit被弃用了,为什么今天会开始使用NUnit而不是xUnit呢? 如果不推荐使用NUnit,这是否意味着xUnit没有像最初的那样起飞? 为什么作者会继续支持两个看似冗余的工具?

  3. 哪些这些集成到VS2010中而不必单独执行命令行来测试,或者必须购买TestDriven.Net等工具? (但我确实有ReSharper,如果这支持其中任何一个。)

  4. 最近是否有任何显着的变化会使这些无效的旧讨论变得无效?

  5. 除了我上面提到的那些之外,还有其他我应该考虑的问题吗?

我不一定要寻找深入的比较(尽管如果您愿意,我们非常欢迎您提供一个),但更多的是当前正在使用的当前工具的最新共识新的VS2010开发。

从表面上看,“Visual Studiounit testing框架”似乎很好地集成到VS2010(Pro)开箱即用,并且似乎很容易快速启动和运行,而不是其他一些,即使它是有点臃肿。 但是因为我是新人,所以我不想在未来3个月内进入它,然后意识到我已经把自己画成一个角落,因为它似乎更容易接受。

我也知道这个问题可能被某些人认为是一个“坏”的问题,因为它具有开放和广泛的性质,但虽然这些是不同的问题,但我觉得它们都是相关的,而且都源于我对模糊的一般混淆我在VS2010中发现了unit testing的相互矛盾。

提前致谢。

编辑:这是对我上面提到的近三年流行讨论的更新讨论。 这个讨论有一些好处,但很多事情(可能)在三年内发生了变化,我更喜欢这个主题的更新评价。

  1. 所有相同..只是混淆(MSTest是跑步者,框架是DLL)。 从现在开始我会把它称为MSTest。
  2. xUnit没有太多里程。 我坚定地躺在NUnit营地里。 不确定历史……但AFAIR Jim Newkirk甚至被微软聘用为MSTest开发。 我绝对可以回答NUnit没有被弃用(甚至放慢速度)。 我只是在报告它的几天内修复了一个错误。 查理普尔已经领导了一段时间(并且做了一个出色的工作)。 NUnit是最早的(并且基于以Beck的SUnit和JUnit开始的xUnit测试运行器系列)。 我已经长大了(可以这么说)。 它只是停留在一起,几乎具备了日常开发所需的所有function。 MSTest提供了VisualStudio集成function,但是会让我感到困惑,微小的偏差让我感到困惑(并行化,夹具设置必须是静态的,等等)。 其他人试图以差异方式扩展测试运行器(术语的变化,例如测试夹具上的理论)以及编写测试的方式。 我从来没有扩展我的试运行员; 也许我没有在那些需要它的环境中工作过。
  3. NUnit不像MSTest那样集成了现成的产品。 但是,如果你有Resharper(你应该),它会填补这个空白。 此外,MSTest AFAIK需要整个IDE(特定版本)的副本,与NUnit不同,它可以复制到文件夹并运行。 如果您使用MSTest,则可以通过“免费代码覆盖”引导您进入TFS。 如果您的组织使用TFS进行CI,您会发现将除MSTest之外的任何内容集成为“我需要编写的更多自定义代码”。

4和5事情不断变化,难以形成最终答案。

简介:NUnit更易于学习(将花费你一天或更少的时间),如果你知道的话,TDD的大多数文献都会更容易理解。 我个人从未有过移动的理由(例如,NUnit没有这样做,xUnit会这样做,如果没有这个,我就无法生存)。 除非你对MS-CI(以及“免费”Coverage和TestImpact)很重要,否则我会说从NUnit开始并按照自己的方式行事。 没有silverlight试运行员。
该工具不能保证成功,而是您使用这些工具的方式。 选择一个,开始并适应。

HTH

这不是一个改变生活的决定。 我在一些项目中使用MSTest,在其他项目中使用NUnit。 我从未尝试过xUnit,但我确信它也没关系。

对于我自己,我更喜欢MSTest,只需内置模板和键绑定的b / c,即可快速运行和设置测试。 也就是说,如果开发团队中的任何人都不能使用VS,那就没有乐趣了。

当使用NUnit时,我不想为Resharper支付费用(对不起,我已经看到了它的实际应用,但根本没有看到它的亮点,我猜)。 我改用Visual NUnit。 http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099它是免费的,集成了W / Visual Studio的UI(虽然它不是一个漂亮的用户界面,但它比TestDriven.NET更好)。

ReSharper可以运行用xUnit,NUnit和MSTest编写的测试。

xUnit需要一个(免费)插件,用于从xUnitContrib页面链接的ReSharper: http ://xunitcontrib.codeplex.com/

NUnit和MSTest都可以开箱即用。

在ReSharper中,您可以看到在ReSharper下安装了哪些unit testing框架 – >选项 – >unit testing(位于左侧窗格中工具的底部)

我可以回答#3:TestDriven很好地与VS2010集成。 您可以获得运行测试的上下文菜单选项,甚至可以将一些命令挂钩到快捷键,这样您就可以快速运行所有测试。