问题描述
|
我是TDD的新手,正在寻找对Visual Studio 2010解决方案进行单元测试的选项。此解决方案是MVC3网络应用程序,我正在尝试将DDD与IoC,存储库和工作单元模式一起使用。它还使用EF4和EF4 POCO模板。 (我尝试通过Microsoft N层应用程序对它进行建模,并且还借鉴了其他两个博客的设计模式)。
我一直在搜索和阅读有关此内容的信息,这已经有几个小时的时间了,看来我到处都是发现矛盾的信息。这主要是由于出现了旧的结果以及Visual Studio 2010不断发展的选项。
我知道有几种选择,但是同样,我很难从较新的选项中识别出过时的选项,而且人们使用的参考文献有些含糊。即使是这里的热门讨论也有一些古老/模棱两可/矛盾的信息。
例如:
MSTest,Visual Studio单元测试框架和“ 0”之间有区别吗?如果是这样,该怎么办?看来这些是不同的,但是在我所见过的一些讨论中并未正确提及。
由于NUnit的作者还创作了xUnit,这是否意味着xUnit替代了NUnit,从而使NUnit弃用了?似乎有些人甚至在今天仍然更喜欢NUnit。但是,如果不赞成使用NUnit,为什么今天要开始在xUnit上使用NUnit?如果不建议使用NUnit,这是否意味着xUnit不会像最初打算的那样起飞?为什么作者会继续支持两个看似多余的工具?
其中哪些集成到了VS2010中,而不必诉诸单独执行的命令行进行测试,也不必购买诸如TestDriven.Net之类的工具? (不过,如果支持任何一种,我确实有ReSharper。)
最近是否有任何显着变化,这些变化会使较早的讨论无效?
除了上面提到的内容之外,我是否还应该考虑其他内容?
我并不一定要进行深入的比较(不过,如果您愿意的话,欢迎您提供比较结果),但更多的是对当前正在使用的工具的最新共识今天用于新的VS2010开发。
从表面上看,“ Visual Studio单元测试框架”似乎可以很好地集成到VS2010(Pro)中,并且与其他一些软件相比,似乎很容易快速启动和运行,即使它有点肿。但是由于我是新手,所以我不想在接下来的三个月内进入,然后意识到我已经把自己画在了一个角落,只是因为它似乎更容易上手。
我也知道,由于它的开放性和广泛性,某些人可能将其视为“坏”问题,但是尽管这些是不同的问题,但我认为它们都是相关的,并且都源自我对在VS2010中进行单元测试时发现的模棱两可和矛盾的地方普遍感到困惑。
提前致谢。
编辑:这是为了更多地更新我上面链接的将近三年的流行讨论。该讨论有一些优点,但是三年内很多事情(可能)已经改变,我喜欢对该主题进行最新的评估。
解决方法
都一样..只是confusopoly(MSTest是运行程序,框架是DLL)。从现在开始,我将其称为MSTest。
使用xUnit不会花费很多精力。我坚定地躺在NUnit阵营中。不确定其历史..但微软甚至聘用了AFAIR Jim Newkirk进行MSTest开发。我绝对可以回答说NUnit不会被弃用(甚至放慢速度)。我只是在报告错误的几天内修复了一个错误。查理·普尔(Charlie Poole)担任该职位已有一段时间了(并从事出色的工作)。 NUnit是最古老的(并且基于以Beck \的SUnit和JUnit开头的xUnit测试运行程序系列)。我已经长大了(可以这么说)。它只是保持顺畅,并具有您日常开发所需的几乎所有功能。 MSTest提供了VisualStudio集成,但是使我感到困惑的是微小的细微偏差(并行化,夹具设置必须是静态的,等等)。其他人则尝试以不同的方式(术语的改变,例如关于测试夹具的理论上的改变)和编写测试的方式来扩展测试运行程序。我从来不需要延长测试运行时间;也许我没有在需要它的环境中工作。
NUnit不像MSTest那样现成集成。但是,如果您有Resharper(应该这样做),它将填补这一空白。另外,与NUnit不同,MSTest AFAIK还需要整个IDE(特定版本)的副本,该副本可以复制到文件夹中并运行。带有“如果您使用MSTest \,则免费提供代码覆盖”的功能使您进入TFS。如果您的组织使用TFS进行CI,您会发现除了MSTest以外的其他任何东西都是“我需要编写的更多自定义代码”。
4和5事物不断变化,以至于难以形成最终答案。
简介:NUnit更易于学习(将花费您一天或更短的时间),并且大多数文献都包含在内。如果您知道的话,TDD会更容易接受。我个人从来没有理由要搬家(例如,NUnit不像xUnit那样做,没有这个我就活不下去)。除非您精通MS-CI(以及“免费”覆盖率和TestImpact),否则我会说从NUnit开始并逐步发展。没有银牌测试员。
该工具不能保证成功,这是您使用这些工具的方式。选择一个,开始并适应。
高温超导
, 这不是改变生活的决定。我在某些项目中使用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更好的imo)。
, ReSharper可以运行以xUnit,NUnit和MSTest编写的测试。
xUnit需要ReSharper的(免费)插件,该插件可从xUnitContrib页面链接到:http://xunitcontrib.codeplex.com/
NUnit和MSTest都可以立即使用。
在ReSharper中,您可以在ReSharper-> Options-> Unit Testing(位于左侧窗格中工具下方的底部)下查看安装了哪些单元测试框架。
, 我可以回答#3:TestDriven与VS2010很好地集成。
您可以获得一个上下文菜单选项来运行测试,甚至可以将某些命令挂接到快捷键上,从而可以快速运行所有测试。