目前,在VisualStudio2010中进行单元测试的首选选项是什么

本文关键字:选项 是什么 单元测试 VisualStudio2010 目前 | 更新日期: 2023-09-27 17:59:00

我是TDD的新手,正在考虑对VisualStudio2010解决方案进行单元测试的选项。这个解决方案是一个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,为什么今天要在xUnit上使用NUnit呢?如果NUnit没有被弃用,这是否意味着xUnit没有像最初预期的那样起飞?为什么作者会继续支持两个看似多余的工具?

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

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

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

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

从表面上看,"Visual Studio单元测试框架"似乎可以很好地开箱即用地集成到VS2010(Pro)中,并且似乎很容易快速启动和运行,与其他一些框架相比,即使它有点臃肿。但由于我是新来的,我不想在三个月后陷入困境,然后意识到我把自己画成了一个角落,只是因为它看起来更容易上手。

我也知道,这个问题可能会被一些人认为是一个"糟糕"的问题,因为它具有开放性和广泛性,但虽然这些都是不同的问题,但我觉得它们都是相关的,所有这些都源于我对VS2010中单元测试的模糊和冲突点的普遍困惑。

提前谢谢。

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

目前,在VisualStudio2010中进行单元测试的首选选项是什么

  1. 还是一样。。只是混淆(MSTest是运行程序,框架是DLL)。从现在起,我将把它称为MSTest
  2. 使用xUnit的里程数不多。我坚定地躺在NUnit营地。不确定历史。。但是AFAIR的Jim Newkirk甚至被微软雇佣来开发MSTest。我可以肯定地回答,NUnit并没有被弃用(甚至没有放慢速度)。我刚刚在报告后的几天内修复了一个错误。Charlie Poole已经领导它一段时间了(并且做得很出色)。NUnit是最古老的(基于从Beck的SUnit和JUnit开始的xUnit测试运行程序家族)。(可以这么说)我是伴随着它长大的。它只是置身事外,几乎拥有日常开发所需的所有功能。MSTest提供了VisualStudio集成,但却用微小的细微偏差搅乱了局面,这些偏差会让我感到困惑(并行化、夹具设置必须是静态的等等)。其他人则试图以不同的方式扩展测试运行程序(术语的变化,如测试夹具的理论)和编写测试的方式。我从来没有延长过我的测试跑道;也许我没有在那些需要它的环境中工作过
  3. NUnit不像MSTest那样集成现成的。但如果你有Resharper(你应该这样做),它会填补这个缺口。此外,MSTestAFAIK需要整个IDE(特定版本)的副本,而NUnit可以直接复制到文件夹中并运行。这有点像是引导你进入TFS,"如果你使用MSTest,那么免费代码覆盖率"。如果你的组织使用TFS进行CI,你会发现集成MSTest之外的任何东西都是"我需要编写的更多自定义代码"

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

总结:NUnit学习起来更简单(只需要一天或更短的时间),如果你知道的话,大多数关于TDD的文献都会更容易理解。我个人从来没有理由搬家(例如,NUnit不像xUnit那样做,我离不开它)。除非你热衷于MS-CI(以及"免费"覆盖率和TestImpact),否则我会说从NUnit开始,一路向上。没有银牌
工具不能保证成功,关键在于你如何使用这些工具。选择一个,开始适应。

HTH

这不是一个改变人生的决定。我在一些项目中使用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更好)。

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

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

NUnit和MSTest都是开箱即用的。

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

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