我将在工作中开始一个新项目,并想进入单元测试。我们将使用Visual Studio 2008, c#和ASP。NET MVC之类的东西。我正在考虑使用NUnit或Visual Studio 2008的内置测试项目,但我也愿意研究其他建议。是一种系统比另一种更好,还是比另一种更容易使用/理解?
我希望让这个项目成为我们未来发展努力的“最佳实践”。
我将在工作中开始一个新项目,并想进入单元测试。我们将使用Visual Studio 2008, c#和ASP。NET MVC之类的东西。我正在考虑使用NUnit或Visual Studio 2008的内置测试项目,但我也愿意研究其他建议。是一种系统比另一种更好,还是比另一种更容易使用/理解?
我希望让这个项目成为我们未来发展努力的“最佳实践”。
当前回答
我从MSTest开始,但我因为一个简单的原因而改变了。MSTest不支持从其他程序集继承测试方法。
我讨厌多次编写相同的测试。特别是在一个大型项目中,测试方法可以很容易地运行到100个测试。
NUnit正是我所需要的。NUnit唯一缺少的是Visual Studio插件,它可以显示每个测试的红色/绿色状态(就像VSTS一样)。
其他回答
Visual Studio测试框架的一个小麻烦是,它会创建许多测试运行文件,这些文件往往会使您的项目目录变得混乱——尽管这并不是什么大问题。
另外,如果你缺少一个像TestDriven这样的插件。NET,你不能在Visual Studio环境中调试你的NUnit(或MbUnit, xUnit等)单元测试,而你可以在Microsoft Visual Studio测试框架中进行,这是内置的。
我已经使用NUnit两年了。一切都很好,但是我不得不说Visual Studio中的单元测试系统非常好,因为它在GUI中,可以更容易地对私有函数进行测试,而不必搞得乱七八糟。
此外,Visual Studio的单元测试允许你做覆盖和其他NUnit单独不能做的事情。
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.
据我所知,目前。net有四个可用的单元测试框架:
NUnit 运行工具 MSTest xUnit
NUnit一直处于领先地位,但在过去一年左右,这种差距已经缩小。我自己还是更喜欢NUnit,特别是他们不久前添加了一个流畅的界面,这使得测试非常易读。
如果您刚刚开始进行单元测试,这可能没有太大区别。一旦你跟上了进度,你就能更好地判断哪个框架最适合你的需求。
我更喜欢使用MS的小测试框架,但现在我坚持使用NUnit。多发性硬化的问题通常是(对我来说)
必须维护的共享“测试”文件(无意义) 测试列表会与多个开发人员/ vcs产生冲突 糟糕的集成UI -令人困惑的设置,繁重的测试选择 没有好的外部流道
警告
如果我正在测试一个aspx站点,我肯定会使用MS的 如果我是独自开发,MS也可以 如果我的技能有限,不能配置NUnit:)
我发现编写我的测试并启动NUnitGUI或其他前端(testDriven的价格非常非常非常昂贵)要容易得多。使用命令行版本设置调试也非常简单。