2

在 .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 专业版或更低版本。

4

2 回答 2

5

MSBuild 是一个非常好的构建工具。我已经将它与 NAnt 和 Cruisecontrol.Net 结合使用了几次。NAnt 与 NAnt contrib 扩展一起在处理 OSS 工具(如 NUnit、NCover 等)方面似乎更加灵活,而 MSBuild 可以构建 VS 解决方案这一事实对它来说是一大优势。我发现创建构建脚本的最简单方法是使用两者,NAnt 调用构建的不同部分(构建、fxcop、测试、覆盖等)和 MSBuild 进行实际构建。

我对 MSTest 没什么好说的。安装在例如构建服务器上既慢又麻烦。它不是很灵活,并且有各种“附加”,似乎更适合于集成测试而不是单元测试。我发现轻量级 XUnit.Net、MBUnit 或 NUnit 更适合单元测试。速度在这里很重要,您希望经常运行测试以快速反馈代码更改的效果。便携性也很重要。您希望在没有安装团队系统的机器上进行 MSTest 所需的大量设置和黑客攻击,让测试在任何地方运行。尽管单元测试并不新鲜,但仍有很多开发工作正在进行中。最佳实践发生了很大变化,工具也发生了很大变化。我不 不想被绑定到每隔几年才使用 Visual Studio 升级的工具。三个 OSS .net 单元测试工具中的每一个都设置为可扩展的。MSTest 不是(据我所知)。

于 2008-10-21T07:38:09.643 回答
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 与 NAnt 略有不同,因为 MSBuild 与框架或 SDK 捆绑在一起(我现在不记得是哪个了)——但我认为 NAnt 是一个更令人愉快的工作环境。MSBuild 显然更适合做原始“构建解决方案”位 - 但您可以从 NAnt 调用它。

于 2008-10-21T07:38:35.807 回答