我将在工作中开始一个新项目,并想进入单元测试。我们将使用Visual Studio 2008, c#和ASP。NET MVC之类的东西。我正在考虑使用NUnit或Visual Studio 2008的内置测试项目,但我也愿意研究其他建议。是一种系统比另一种更好,还是比另一种更容易使用/理解?
我希望让这个项目成为我们未来发展努力的“最佳实践”。
我将在工作中开始一个新项目,并想进入单元测试。我们将使用Visual Studio 2008, c#和ASP。NET MVC之类的东西。我正在考虑使用NUnit或Visual Studio 2008的内置测试项目,但我也愿意研究其他建议。是一种系统比另一种更好,还是比另一种更容易使用/理解?
我希望让这个项目成为我们未来发展努力的“最佳实践”。
当前回答
我用这两种方法做过一些TDD,(也许我有点笨)NUnit对我来说似乎更快更简单。我说的很多,就是很多。
在MSTest中,到处都有太多的属性——真正进行测试的代码就是你可能在这里或那里读到的那些小行。一片混乱。在NUnit中,执行测试的代码只是控制属性,就像它应该做的那样。
同样,在NUnit中,你只需要点击你想要运行的测试(只有一个?一个班的所有测试?一个装配?解决方案?)一个点击。窗户又大又亮。你可以看到清晰的绿灯和红灯。你真了解一眼就能看到什么。
在VSTS中,测试列表卡在屏幕的底部,它又小又丑。你得仔细看看才能知道发生了什么事。而且您不能只运行一个测试(好吧,我还没有发现!)。
当然,我可能是错的——我刚刚读了21篇关于“如何使用VSTS做简单的TDD”的博文。我应该多读些书;你说得对。
在《NUnit》中,我读了一本。同一天我也去了tdd。与乐趣。
顺便说一下,我通常很喜欢微软的产品。Visual Studio确实是开发人员能买到的最好的工具——但是Visual Studio Team System中的TDD和工作项管理真的很糟糕。
其他回答
我更喜欢使用MS的小测试框架,但现在我坚持使用NUnit。多发性硬化的问题通常是(对我来说)
必须维护的共享“测试”文件(无意义) 测试列表会与多个开发人员/ vcs产生冲突 糟糕的集成UI -令人困惑的设置,繁重的测试选择 没有好的外部流道
警告
如果我正在测试一个aspx站点,我肯定会使用MS的 如果我是独自开发,MS也可以 如果我的技能有限,不能配置NUnit:)
我发现编写我的测试并启动NUnitGUI或其他前端(testDriven的价格非常非常非常昂贵)要容易得多。使用命令行版本设置调试也非常简单。
Daok列出了Visual Studio 2008测试项目的所有优点。下面是NUnit的优点。
NUnit has a mocking framework. NUnit can be run outside of the IDE. This can be useful if you want to run tests on a non-Microsoft build server, like CruiseControl.NET. NUnit has more versions coming out than visual studio. You don't have to wait years for a new version. And you don't have to install a new version of the IDE to get new features. There are extensions being developed for NUnit, like row-tests, etc. Visual Studio tests take a long time to start up for some reason. This is better in Visual Studio 2008, but it is still too slow for my taste. Quickly running a test to see if you didn't break something can take too long. NUnit with something like Testdriven.Net to run tests from the IDE is actually much faster. Especially when running single tests. According to Kjetil Klaussen, this is caused by the Visual Studio testrunner. Running MSTest tests in TestDriven.Net makes MSTest performance comparable to NUnit.
我用这两种方法做过一些TDD,(也许我有点笨)NUnit对我来说似乎更快更简单。我说的很多,就是很多。
在MSTest中,到处都有太多的属性——真正进行测试的代码就是你可能在这里或那里读到的那些小行。一片混乱。在NUnit中,执行测试的代码只是控制属性,就像它应该做的那样。
同样,在NUnit中,你只需要点击你想要运行的测试(只有一个?一个班的所有测试?一个装配?解决方案?)一个点击。窗户又大又亮。你可以看到清晰的绿灯和红灯。你真了解一眼就能看到什么。
在VSTS中,测试列表卡在屏幕的底部,它又小又丑。你得仔细看看才能知道发生了什么事。而且您不能只运行一个测试(好吧,我还没有发现!)。
当然,我可能是错的——我刚刚读了21篇关于“如何使用VSTS做简单的TDD”的博文。我应该多读些书;你说得对。
在《NUnit》中,我读了一本。同一天我也去了tdd。与乐趣。
顺便说一下,我通常很喜欢微软的产品。Visual Studio确实是开发人员能买到的最好的工具——但是Visual Studio Team System中的TDD和工作项管理真的很糟糕。
首先我想纠正一个错误的说法:你可以使用命令行在Visual Studio之外运行MSTest。尽管一些CI工具,如TeamCity,对NUnit有更好的支持(可能会随着MSTest变得更流行而改变)。
在我目前的项目中,我们两者都使用,唯一的大区别是,我们发现MSTest总是作为32位运行,而NUnit运行为32位或64位测试,这只在你的代码使用32/64位依赖的本机代码时才重要。
我已经使用NUnit两年了。一切都很好,但是我不得不说Visual Studio中的单元测试系统非常好,因为它在GUI中,可以更容易地对私有函数进行测试,而不必搞得乱七八糟。
此外,Visual Studio的单元测试允许你做覆盖和其他NUnit单独不能做的事情。