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

Jer*_*ose 6 c# nunit unit-testing visual-studio-2010 asp.net-mvc-3

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

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

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

例如:

  1. MSTest,Visual Studio单元测试框架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 Studio单元测试框架"似乎可以很好地集成到VS2010(Pro)中,并且看起来很容易快速启动和运行,而不是其他一些,即使它是有点臃肿.但是因为我是新人,所以我不想在未来3个月内进入它,然后意识到我已经把自己画成一个角落,因为它似乎更容易接受.

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

提前致谢.

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

Gis*_*shu 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和5事情不断变化,难以形成最终答案.

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

HTH