How to Ease TDD with MSTest / VS2008我一次又一次地读到,与其他测试框架(例如nUnit,MBUnit等)相比,使用MSTest进行TDD /测试首先要困难得多。有哪些建议的手动解决方法和/或建议的第三方建议? 由于基础架构政策,MSTest是唯一的选择吗? 我主要是想知道VS 2008 Team Suite,但是我想开始使用VS 2008 Pro的技巧也很合适,因为这些版本现在也包含一些MSTest功能。 MSTest当然不如某些开源框架有效或可扩展,但它是可行的。由于该问题是关于使用MSTest使生活更轻松而不是替代方法,因此这里是我的MSTest提示。
如果您别无选择,只能使用MSTest,请学习键盘快捷键。它们会让您的生活更轻松。
在当前上下文中测试:CTRL + R,T
当前上下文中的调试测试:CTRL + R,CTRL + T 我很好奇我不明白的是,人们开始比较MSTest提供的所有开放源代码工具并开始抨击它。评论它是多么的笨拙,多么的不合理等等。恕我直言,这是因为它与xUnit框架有根本的不同。针对并行执行进行了优化。 即使是静态的ClassInitialze和Cleanup,以及每个测试都具有唯一的TestContext的问题,都是因为下一代-至少对于MS语言的Windows业务程序员而言-并行编程概念。 我不幸地在一个拥有成千上万个单元测试的项目中工作。他们过去几乎占用了大部分构建时间!使用MSTest,我们可以将时间缩短到非常可管理的时间范围。 我的同事Mike Hadlow很好地总结了为什么我们完全不喜欢MSTest。 他设法将其从项目中删除,但我目前正在从事一个涉及更多政治事务的大型项目,因此我们仍在使用它。 结果是,实施MSTest的任何人都不了解TDD。我很抱歉听起来像是M $破烂者-我真的不是。但是我很烦恼我不得不忍受一个非常糟糕的工具。 如前所述,oyu需要安装完整的IDE才能在另一台计算机上使用MSTest,这有点废话。我想这是因为他们希望确保单元测试仅在高端视觉工作室上可用,并且您可以以任何其他方式运行它们。
另外,MSTest相当慢,这是因为在每个测试之间,它都会为每个测试重建整个上下文,这可以确保以前的测试-失败或不影响当前的测试,但是会降低速度。但是,您可以使用/ noisolation标志,它将在MSTest进程中运行所有测试-更快。
它太难使用了,有很多更好的选择。
mstest有许多配置文件,因此操作性较差。 我建议仅在构建过程中将mbunit作为依赖项运行,它很容易将其与bin一起浮动,并提供引用,无需安装。 我还没有看到与MSTest有关的任何严重问题。具体来说,您在说什么?实际上,我们正在从NUnit转向MSTest。不过,我不知道我们这样做的原因。 我已经使用NUnit进行了TDD开发多年,由于角色变更,现在已经使用MSTest大约4个月了。 我认为MSTest不会阻止某人进行TDD。您仍然拥有TDD所需的所有核心内容,例如基本的断言和模拟框架(我使用Rhino Mocks)。 MSTest确实与Visual Studio紧密集成,此集成的最佳组件是内置的代码覆盖率工具。
但
这意味着编写断言需要花费更多的代码,而测试运行速度慢则意味着整个过程比NUnit慢。
如果您将TFS用于CI,则需要跳过几个步骤才能使NUnit发布测试结果。相比之下,使用MSTest在TFS上运行测试非常简单明了。
要回答一个非针对性的问题,我的答案是
免责声明:我没有使用xUnit的MS版本的实际经验,但是我听到诸如"您需要安装庞大的想法才能在单独的计算机上运行测试"之类的问题-这是完全不可以的。 我将停止我的讲道..现在:) |