我一次又一次地读到,使用MSTest进行TDD /测试比使用其他测试框架(如nUnit,MBUnit等)更困难......有什么建议的手动变通方法和/或第三方位你建议什么时候MSTest是基础设施政策的唯一选择?我主要想知道的是VS 2008 Team Suite,但我认为VS 2008 Pro的提示也适用,因为现在还有一些MSTest功能。
答案 0 :(得分:29)
MSTest肯定不像某些开源框架那样高效或可扩展,但它是可行的。由于这个问题要求使用MSTest使生活更轻松而不是替代品,这里是我的MSTest提示。
答案 1 :(得分:13)
如果您别无选择,只能使用MSTest,请了解键盘快捷键。他们会让你的生活更轻松。
在当前背景下测试: CTRL + R , T
解决方案中的所有测试: CTRL + R , A
当前上下文中的调试测试: CTRL + R , CTRL + T
调试解决方案中的所有测试: CTRL + R , CTRL + A
答案 2 :(得分:6)
我很好奇。我不明白的是人们开始比较MSTest提供的所有开源工具并开始抨击它。评论它是多么笨拙,如何无知等恕我直言,这是因为它与xUnit框架有根本的不同。它针对并行执行进行了优化。
即使是具有静态ClassInitialze和Cleanup的qurik,并且每个测试都有唯一的TestContext,因为nextgen - 至少对于MS语言的Windows业务程序员来说 - 并行编程概念。
我不幸在一个有数万次单元测试的项目中工作。他们过去几乎占用了大部分的构建时间!通过MSTest,我们将其降低到非常可管理的时间线。
答案 3 :(得分:3)
我的同事Mike Hadlow很清楚我们为什么完全厌恶MSTest here。
他设法将其从他的项目中移除,但我目前正在开展一个涉及更多政治的更大项目,所以我们仍在使用它。
它的结果是实施MSTest的人不理解TDD。我很遗憾听起来像M $ basher - 我真的不是。但我很生气,我不得不忍受一个非常糟糕的工具。
答案 4 :(得分:2)
我没有看到任何与MSTest有关的严重问题。具体来说,你在说什么?事实上,我们正在从NUnit转向MSTest。不过,我不知道我们的原因。
答案 5 :(得分:2)
mstest中有很多配置文件,使其不那么con。
我选择mbunit的另一个原因是mbunit的“回滚”功能。这允许您回滚在此测试中完成的所有数据库事务,因此您可以实际进行完整的电路测试,而不用担心测试后池塘被污染。
在mstest中也没有RowTest工具。
我建议只在构建过程中运行mbunit作为依赖项,它很容易用你的bin浮动它,引用,无需安装。
答案 6 :(得分:2)
它太难用了,有很多更好的选择。
答案 7 :(得分:2)
如上所述oyu需要安装完整的IDE才能在另一台机器上使用MSTest,这有点废话。我想这是因为他们希望确保单元测试仅适用于高端视觉工作室,并且你能够以任何其他方式运行它们。
另外,MSTest非常慢,这是因为在每次测试之间它会重建每个测试的整个上下文,这使得oone确定以前的测试 - 失败或者不会影响当前的测试,但会减慢速度。但是你可以使用/ noisolation标志,它将在MSTest过程中运行所有测试 - 这样更快。 要在IDE中加速:在VS ide中,您可以转到Tools-Options,然后选择Test Tools。选择名为Test execution的子项,并在右侧的dialouge中确保选中“在测试运行之间保持测试执行引擎运行”复选框。
答案 8 :(得分:1)
要回答一个非尖锐的问题,我的回答是 “可能NUnit只是不在你的脸上。”
免责声明:我没有使用MS版xUnit的实际经验,但是我听到了诸如“你需要安装巨大的想法只是为了在一台单独的机器上运行测试”的问题 - 这是一个完整的禁忌。 除此之外,MS还有这种方式通过某种与所有想法背道而驰的IDE铃声/哨子来扭曲新手的正确道路。就像从类中生成测试一样,我记得在一年左右的时间里就已经记得了......它打败了测试驱动的全部要点 - 你的设计应该从RGR的微小步骤中出现:写一个测试 - 让它通过重构。如果您使用该工具 - 它会剥夺您的整个体验。
我会停止我的布道..现在:)
答案 9 :(得分:1)
我已经使用NUnit进行了多年的TDD开发,并且由于角色的改变,现在已经使用MSTest大约4个月了。
我认为MSTest不会阻止某人做TDD。你仍然拥有TDD所需的所有核心内容,例如基本断言和模拟框架(我使用Rhino Mocks)。
MSTest与Visual Studio紧密集成,此集成的最佳组件是内置的代码覆盖率工具。
BUT 使用MSTest有很多令人信服的理由不。我认为最大的两个关闭点是:
这意味着写入断言需要更多代码与慢速测试运行器相结合意味着整个过程比NUnit慢。 开源选项在社区中也有更多的支持。
如果你正在使用TFS进行CI,那么你需要跳过一些箍/ hack来让NUnit发布测试结果。使用MSTest在TFS上运行测试非常简单直接。 如果你没有触及TFS而不是我一直去NUnit,它就更好了。