首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NUnit vs MSTest -一个变化无常的TDD新手对他们的体验

NUnit vs MSTest -一个变化无常的TDD新手对他们的体验
EN

Stack Overflow用户
提问于 2010-03-03 16:50:18
回答 3查看 1.1K关注 0票数 2

这里有很多关于NUnit和MSTest的问题,我已经读过不少了。我想我的问题有点不同,可以分开张贴。

当我开始使用C#时,我甚至从来没有考虑过看MSTest,因为我以前在使用C++时非常习惯于不使用它。我基本上都忘了。)所以我从NUnit开始,并且很喜欢它。测试很容易设置,测试也不太痛苦--只需启动IDE并运行测试!

正如这里许多人所指出的,NUnit经常更新,而MSTest只像IDE那样经常更新。如果您不需要处于TDD的边缘(我不需要),这并不一定是一个问题,但是我经常更新的问题是让所有的系统保持最新。我每天使用大约四到五台不同的PC,虽然更新它们并不是什么大事,但我希望找到一种方法,使我的代码能够在具有较旧版本的NUnit的系统上正确编译。由于我的项目引用了NUnit安装文件夹,当我升级该框架时,任何安装了旧框架的计算机都将无法编译我的项目。我试图通过在SVN中创建一个只有NUnit DLL的公用文件夹来解决这个问题,但即使这样,它也会以某种方式抱怨二进制文件的版本号。有办法解决这个问题吗?这就是我第一次停止使用的原因。

有一天,我想起了MSTest,决定试一试。我喜欢它被集成到IDE中。CTRL,CTRL,所有测试都运行。多简单啊!但后来我发现,MSTest中可用的测试类型非常有限。我不知道我到底需要多少,但我想我应该回到NUnit,我确实需要。

现在,我开始需要调试单元测试,而在NUnit中找到如何实现的唯一方法就是将NUnit设置为启动应用程序,然后在测试中设置断点。然后,在NUnit GUI中,我将运行测试以命中断点。这是一个完整的皮塔。然后,我再次查看了MSTest GUI,并发现我可以在那里单击Debug,它将执行我的测试!哇!这就是让我支持MSTest的杀手特性。

现在,我又开始使用MSTest了。不幸的是,今天我开始考虑日常构建,并在Tinderbox上做了一些搜索,这是我以前听说过的唯一用于这类事情的工具。这让我开始关注其他工具,比如buildbot和TFS。因此,这里的问题是,我认为MSTest可以保证将我锁在TFS中,以便进行每天的自动构建,或者持续集成,或者不管什么是流行词。我的公司负担不起被困在只使用MS的解决方案(VS除外),所以我想检查其他的选择。

我完全可以回到NUnit。我对重写100+单元测试并不感兴趣,但这就是它的发展方向。不过,我真的很希望有人能解释一下如何解决我的这两个问题,概括起来如下:

  1. 我如何设置NUnit和我的项目,这样我就不必继续在每个系统上升级它来构建我的项目了?
  2. 如何更容易地调试单元测试?我的方法很痛苦,因为为了测试/运行我的应用程序,我必须一直在NUnit和默认应用程序之间切换。我在这里看到了一篇文章,上面提到了codeplex上的NUnitIt,但我没有任何经验。

更新 --我在比较开发VM中的内容,到目前为止,NUnitit相当不错。安装起来很容易(单击一下),我只需将它指向我的SVN外部文件夹中的任何NUnit二进制文件。还不错!我还学习了VS -> Tools -> Options ->键盘,并更改了CTRL、CTRL映射到NUnitit.Connect.DebugGUI的映射。这并不完美,因为我还没有弄清楚如何使NUnit在打开时自动运行测试,但它非常好。调试就像现在应该做的那样!

更新#2 --我安装了TestDriven.Net并快速运行了一遍。总的来说,我喜欢它比NUnitit好得多,但目前,NUnitit赢了,因为它是免费的,而且由于它也适用于NUnit,所以当时机成熟时,它将允许我“升级”到TestDriven.Net。关于TestDriven.Net,我最喜欢的一点是,当我双击失败的测试时,它会把我带到测试中失败的一行,而NUnit + NUnitit似乎无法做到这一点。有没有人能够在VS和VS之间建立这个链接?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-03 17:05:20

我参与过的许多项目都在源代码管理中的"lib“或"extrernal”或“库”文件夹中包含了NUnit (或xUnit.net )特定版本的副本,并引用了构建所有测试的位置。这大大减少了“升级每个人”的麻烦,因为您真的不需要安装NUnit或xUnit.net来使用它。

这种方法仍然允许您使用像TestDriven.Net这样的工具来执行测试,在调试器中运行测试等等。

票数 2
EN

Stack Overflow用户

发布于 2010-03-03 17:00:15

为了更容易地调试(并运行)单元测试,我建议签出TestDriven.Net。“用>调试器测试”功能非常方便。个人版本是免费的。

票数 2
EN

Stack Overflow用户

发布于 2010-03-03 16:59:46

您在NUnit.framework引用上玩过“特定版本”属性吗?我们将我们的测试设置为真,以便为给定的nunit版本编码的测试需要执行该特定版本。

例如,我不知道它将如何处理,例如,如果您的计算机上有2.5,而另一台机器只有2.4 -- .NET是愉快地绑定到2.4版本,还是只从早期版本绑定到程序集的更高版本(例如,针对2.4编译,但在运行时可用2.5 )?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2373179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档