在.NET v1期间,我尝试使用NUnit和NAnt的其他工具来说服同事开发测试驱动和自动构建的工作习惯,但没有取得太大成功。当.NET Framework 2.0和Visual Studio 2005 Team Suite出现时,我能够“强迫”我的团队编写测试并在Visual Studio中为自己提供可视化测试。我还能够通过额外的MSBuild任务来调整项目文件,以实现更多的构建自动化。
当然,这并不意味着微软已经提供了完美的系统,但我相信他们已经采取了正确的步骤。所有这些功能都融入到框架和产品中并成为“原生”,它使得动作开发人员更容易进入更好的开发实践。
早就忘记了开源选项(我确实错过了),我想知道NUnit和NAnt目前的化身是什么价值主张?在这个阶段,人们可以争论说服团队不使用MSBuild还是MSTest?
澄清: 我的公司是一个纯粹的微软SI。 Visual Studio Team Suite版本,Database Professional版本,TFS等可供我们使用。我们不使用Visual Studio Professional版本或更小版本。
答案 0 :(得分:5)
MSBuild是一个非常好的构建工具。我已经将它与NAnt和Cruisecontrol.Net结合使用了几次。 NAnt和NAnt contrib扩展在处理像NUnit,NCover等OSS工具时似乎更灵活,而MSBuild可以构建VS解决方案的事实对它来说是一个很大的优势。我发现创建构建脚本的最简单方法是使用两者,NAnt调用构建的不同部分(构建,fxcop,测试,覆盖等)和MSBuild来进行实际构建。
我对MSTest没什么好说的。在例如构建服务器上安装它是缓慢而麻烦的。它不是非常灵活,并且具有各种“附加功能”,似乎更适合集成测试,而不是单元测试。我发现轻量级XUnit.Net,MBUnit或NUnit更适合单元测试。速度在这里很重要,您希望经常运行测试,以便快速反馈代码中的更改效果。便携性也很重要。你想让测试在任何地方都运行,而不需要像没有安装团队系统的机器那样需要MSTest的大量设置和黑客攻击。虽然单元测试不是新的,但仍然有很多开发。最佳实践变化很大,工具也是如此。我不想被绑定到只使用visual studio每隔几年升级一次的工具。三个OSS .net单元测试工具中的每一个都设置为可扩展的。 MSTest不是(就我所见)。
答案 1 :(得分:4)
在我看来,NUnit是.NET中单元测试的事实标准。它是免费的,您可以轻松地在任何版本的Visual Studio中编写测试。如果MS在VS 2005 Pro中提供了MS Test(就像他们在VS 2008 Pro中一样),它现在可能已经接管了 - 但我认为为时已晚。
我认为ReSharper对于Visual Studio来说基本上是必不可少的,它包括一个非常适合NUnit的测试运行器。如果我正在开发一个开源项目,为什么我要求VS 2008 Pro或VS 2005 Team Suite?
MSBuild vs NAnt略有不同,因为MSBuild与框架或SDK捆绑在一起(我现在不记得了) - 但我认为NAnt是一个更愉快的工作环境.MSBuild显然更适合做原始的“构建解决方案”位 - 但您可以从NAnt调用它。