今天,Visual Studio 2010中的单元测试有哪些首选选项?

时间:2011-06-14 04:56:23

标签: c# visual-studio-2010 unit-testing asp.net-mvc-3 nunit

我是TDD的新手,正在研究我的Visual Studio 2010解决方案的单元测试选项。此解决方案是一个MVC3 Web应用程序,我尝试将DDD与IoC,存储库和工作单元格一起使用。它还使用EF4& EF4 POCO模板。 (我试图从Microsoft N-layer App模拟大部分内容,也从其他几个博客那里借用设计模式。)

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

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

例如:

  1. MSTestVisual Studio Unit Testing FrameworkMicrosoft.VisualStudio.TestTools.UnitTesting之间是否存在差异?如果是这样,什么?看来这些是不同的,但在我见过的一些讨论中却被错误地引用了。

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

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

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

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

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

    从表面上看,“Visual Studio单元测试框架”似乎可以很好地集成到VS2010(Pro)中,并且看起来很容易快速启动和运行,而不是其他一些,甚至如果它有点膨胀。但是因为我是新手,所以我不想在未来3个月内进入它,然后意识到我已经把自己画成一个角落,因为它似乎更容易拿起。

    我也知道这个问题可能被一些人认为是一个“坏”的问题,因为它具有开放和广泛的性质,但虽然这些问题是不同的,但我觉得它们都是相关的,都源于我的一般困惑在VS2010中我发现有关单元测试的模糊和冲突点。

    提前致谢。

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

4 个答案:

答案 0 :(得分:7)

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

    总结:NUnit更容易学习(需要一天或更短的时间)和大部分文献w.r.t.如果您知道,TDD将更容易下载。我个人从未有过移动的理由(例如,NUnit不会这样做,xUnit会这样做,如果没有这个,我就无法生存)。除非你对MS-CI(以及“免费”Coverage和TestImpact)很重要,否则我会说从NUnit开始,然后继续努力。没有白银试运行员。
    该工具不保证成功,而是您使用这些工具的方式。选择一个,开始并适应。

    HTH

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

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

NUnit和MSTest都可以开箱即用。

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

答案 3 :(得分:0)

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

相关问题