在VS 2012中远离Pex和Moles?

7
谈到测试,我是通过实践慢慢逐渐了解其重要性的。现在我是一个狂热粉丝,并经常使用像TDD这样的方法。在 VS 2010 中,我通常使用 MSTEST 进行设计和回归测试。这非常棒 - 所有我的项目都是开源的,并与我的工作(大学物理研究)相连。接着,我开始使用 Pex,这对于发现我之前没有想到的各种边缘情况帮助很大。总的来说,这对我编码方式产生了革命性的影响。而这也让我接触到了 Moles。它也非常酷(但我还在学习中)。
不幸的是,我只能访问 VS 的专业版(这是我们大学获得的站点许可证)。结果是,Moles 不再起作用,升级后的 Fakes 也不行。我想下一个版本的 Pex 将依赖于 Fakes,使其成为仅限 Ultimate 版本的选项。
所以,我现在正在寻找具有类似功能的开源工具。是否有某篇文章或资源可以比较一下那些更成熟的 OSS 项目?我有些困惑(即选项太多)。虽然我喜欢这种模拟能力,但它只是个工具,而不是我想花费业余时间玩耍的东西(这也是我大部分 .NET 编程发生的地方)。
我认为除非花费真正的金钱,否则不可能替换 Pex。
顺便说一下,似乎我应该寻找其他比 MSTEST 更好的测试框架。MSTEST 很不错,但开始感觉有点受限制了(如果 VS2012 有任何新功能,我还没有探索过)。
提前感谢您的帮助,通常我会尝试提出更具体的问题,但此时我有些茫然无措。

nunit和xunit是MSTests的很好的替代品。xunit现在甚至支持异步测试。 - roundcrisis
2个回答

5
  1. 即使您通常在VS 2012中工作,您仍可以通过在VS 2010中打开解决方案来继续使用PEX生成测试。VS项目模式在VS 2010和VS 2012之间非常兼容。您还可以考虑从2010插件中运行命令行PEX。请参见https://stackoverflow.com/a/6809669

  2. PEX应该与其他模拟框架一起使用,不限于Moles或Fakes,请参见将PEX与MoQ集成

  3. Fakes现在可用于VS Premium- 请参见http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2919309-provide-microsoft-fakes-with-all-visual-studio-edi

  4. 从众多的模拟框架中,我们的团队选择了NSubstitute,并且我们对它很满意。

  5. 我不知道除PEX外是否存在在.NET中生成测试的替代方案。但是请查看AutoFixture,两个项目都专注于自动生成测试输入。“使用AutoFixture进行TDD,然后随后使用PEX进行QA将是有意义的组合。”


4

我不知道在.NET中测试的替代品除了PEX。

有许多Fakes框架的替代品,例如MoqRhino Mocks。请参见此处以获取更完整的列表。个人使用Moq,因为我喜欢其流畅的API,并且它支持经典和模拟主义者两种风格的测试。

Fakes框架还包括生成类型的Shims的功能,这些类型不适合进行单元测试(例如封闭类型或静态方法)。TypeMock Isolator可能是唯一的替代品,但它不是免费的。如果没有,您可以编写自己的测试友好的包装器,或者使用某种形式的鸭子类型

Visual Studio 2012拥有测试运行器的插件架构,Peter Provst维护了一个插件列表在这里。我认为VS 2012现在使用vstestconsole而不是MSTest,在2012年运行单元测试比2010年感觉快得多。NUnit对参数化测试的支持比MSTest更好。


是的。我会想念使用垫片的能力,我正学习这项技能。 - Gordon
Fakes是Moles的发布版本。Pex仍然可能有未来。Moles先上市并解决所有问题是有道理的。Pex可能会在下一个主要版本中出现。我没有听说过这个,这只是猜测。 - Mike Christian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接