Rya*_*rin 252 c# asp.net-mvc nunit unit-testing visual-studio-2008
我将在工作中启动一个新项目,并希望进入单元测试.我们将使用VS 2008,C#和ASP.NET MVC.我正在考虑使用NUnit或VS2008具有的内置测试项目,但我愿意研究其他建议.一个系统比另一个系统更好,或者比另一个更容易使用/理解?我希望将这个项目设置为我们未来发展努力的"最佳实践".
感谢您的帮助和建议!!
Men*_*elt 98
Daok命名了VS2008测试项目的所有专家,这里是NUnit的专业人士.
Tuo*_*nen 64
单元测试框架实际上并不重要,因为您可以使用单独的项目文件和条件编译(如此,VS-> NUnit)转换测试类:
#if !NUNIT using Microsoft.VisualStudio.TestTools.UnitTesting; #else using NUnit.Framework; using TestClass = NUnit.Framework.TestFixtureAttribute; using TestMethod = NUnit.Framework.TestAttribute; using TestInitialize = NUnit.Framework.SetUpAttribute; using TestCleanup = NUnit.Framework.TearDownAttribute; using TestContext = System.String; using DeploymentItem = NUnit.Framework.DescriptionAttribute; #endif
TestDriven.Net插件非常好而且价格不贵......只有普通的VS2008,您必须从测试类或测试列表中找到测试.使用TestDriven.Net,您可以直接从您正在测试的类中运行测试.毕竟,单元测试应该易于维护并且靠近开发人员.
Sim*_*ara 34
VS2008内置单元测试框架的优点/变化
Pat*_*ins 33
我已经使用NUnit 2年了.一切都很好,但我不得不说VS中的Unit系统相当不错,因为它位于Gui内部,可以更轻松地测试私有功能,而不必乱用.此外,VS的单元测试允许你做覆盖和NUnit单独做不到的其他事情.
Tar*_*ier 14
Visual Studio的测试框架的一个轻微烦恼是,它会创建许多测试运行文件,这些文件往往会混乱您的项目目录 - 尽管这不是什么大不了的事.
此外,如果缺少TestDriven.NET等插件,则无法在Visual Studio环境中调试NUnit(或MbUnit,xUnit等)单元测试,就像使用内置的Microsoft VS测试框架一样.
Ian*_*tle 11
我对NUnit的VS单元测试的主要优点是VS测试创建倾向于为私有成员访问注入一堆生成的代码.
有些人可能想测试他们的私人方法,有些可能不会,这是一个不同的主题.
我担心的是,当我编写单元测试时,他们应该受到极大的控制,所以我确切地知道我正在测试什么以及我正在测试它.如果有自动生成的代码我失去了一些所有权.
Syl*_*gue 11
我用两者做了一些TDD(也许我有点笨)nUnit对我来说似乎更快更简单.当我说了很多,我的意思很多.
在MS Test中,到处都有太多的属性 - 进行实际测试的代码是你可以在这里和那里阅读的细线.一团糟.在nUnit中,执行测试的代码就像它应该做的那样支配属性.
另外,在nUnit中,你只需要点击你想要运行的测试(只有一个?所有测试都覆盖了一个类?一个程序集?解决方案?).点击一下.窗户清晰而大.你会得到清晰的绿色和红色灯光.你真的知道在一个视线中会发生什么.
在VSTS中,测试列表卡在屏幕的底部,它很小而且很丑.你必须看两次才能知道发生了什么.你不能只运行一次测试(好吧,我还没发现!).
但我当然可能错了 - 我刚读了大约21篇关于"如何使用VSTS进行简单TDD"的博客文章.我应该读更多,你是对的.
对于nUnit,我读了一个.我当天正在进行TDDing.有趣.
顺便说一句,我通常喜欢微软的产品.Visual Studio确实是开发人员可以购买的最佳工具 - 但Visual Studio Team System中的TDD和工作项管理确实很糟糕.
祝一切顺利.西尔万.
首先,我想纠正一个错误的陈述:你可以使用命令行在visual studio之外运行msTest.虽然TeamCity等几个CI工具对NUnit有更好的支持(可能会随着msTest变得更受欢迎而改变).在我目前的项目中,我们使用两者,我们发现唯一的大差异是mstest总是以32位运行,而NUnit运行为32位或64位测试,这只有在您的代码使用32/64相关的本机代码时才有意义.
我得到的消息是"NUnit文件结构比VSTest更丰富"......当然如果你更喜欢NUnit文件结构,你可以使用这个解决方案,就像这样(NUnit-> VS):
#if !MSTEST
using NUnit.Framework;
#else
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
using SetUp = Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute;
using TearDown = Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute;
#endif
Run Code Online (Sandbox Code Playgroud)
或者任何其他转换...... :-)这里使用的只是编译器的别名.
小智 8
我从MSTest开始,但转换的原因很简单.MSTest不支持从其他程序集继承测试方法.
我讨厌多次编写相同测试的想法.特别是在一个大型项目中,测试方法很容易进入100个测试阶段.
NUnit可以直接满足我的需求.NUnit唯一缺少的是Visual Studio Addin,它可以显示每个测试的红/绿状态(如VSTS).
如果您正在考虑MSTest或nUnit,那么我建议您查看mbUnit.我的理由是
我最初选择了mbUnit因为它的[RowTest ....]功能,我还没有找到回归的理由.我从nUnit移动了所有活动的测试套件,从未回头.从那以后,我将两个不同的开发团队转换成了收益.
据我所知,目前有四个框架可供.NET进行单元测试
NUnit一直在前面,但差距在去年左右已经关闭.我仍然更喜欢NUnit,特别是因为他们在一段时间后添加了一个流畅的界面,这使得测试非常易读.
如果您刚开始进行单元测试,它可能没什么区别.一旦掌握了速度,您就可以更好地判断哪种框架最适合您的需求.
小智 6
我不喜欢VS内置测试框架,因为它会强制您创建一个单独的项目,而不是将您的测试作为您正在测试的项目的一部分.
MSTest本质上是NUnit稍微重做的,有一些新功能(例如装配设置和拆卸,不仅仅是夹具和测试级别),并且缺少一些最佳位(例如新的2.4约束语法).NUnit更加成熟,其他供应商对它的支持也更多; 当然,因为它总是免费的(而MSTest只是进入了2008年的专业版,之前它是更昂贵的SKU),大多数ALT.NET项目都使用它.
话虽如此,有些公司非常不愿意使用没有微软标签的东西,尤其是OSS代码.因此,拥有正式的MS测试框架可能是这些公司需要进行测试的动机; 老实说,重要的是测试,而不是你使用的工具(使用上面的Tuomas Hietanen代码,你几乎可以使你的测试框架可以互换).
| 归档时间: |
|
| 查看次数: |
56611 次 |
| 最近记录: |