【问题标题】:Which mocking frameworks allow zero changes to legacy code?哪些模拟框架允许对遗留代码进行零更改?
【发布时间】:2014-07-14 18:00:22
【问题描述】:

我正在为一个大型 C++ 项目寻找一个模拟框架。我暂时选择了 GoogleTest 作为测试框架,所以我首先查看了 GoogleMocks。然而,后来我发现了 TypeMock 的 Isolator++,它有两个我非常喜欢的特性:

  1. 它可以模拟任何东西。
  2. 它允许您在不更改遗留代码的情况下添加测试覆盖率(使用方法调用拦截和其他一些魔法)。无需拼接接口即可添加测试。

缺点是 Isolator++ 是商业产品。我担心供应商锁定等。是否有其他具有相同功能的框架?也许是开源的?


我还要排除我在其他帖子中观察到的一个常见批评:“TypeMock 鼓励糟糕的设计。你应该改进你的设计,而不是使用支持坏习惯的工具。” (我的解释)

我的回答是:我确实想改进设计。我还想在重构之前添加测试覆盖率。为此,零代码更改添加测试的能力非常有吸引力。

【问题讨论】:

标签: c++ unit-testing mocking googlemock typemock


【解决方案1】:

好吧,我想这篇文章的标题也可以是:“TypeMock Isolator++ 有没有竞争对手”?据我所知,答案是否定的。

对于 C# 代码,TypeMock Isolator 确实有几个竞争对手:Telerik JustMock 和 Microsoft Fakes。但是对于 C++,TypeMock Isolator++ 是我发现的唯一一个。

对于遇到这种情况的任何人,我还建议阅读 Michael Feather 的书“有效地使用旧代码”。它提供了许多实用技巧,让您无需像 Isolator 那样模拟活动对象即可进行测试。也就是说,在我看来,在某些情况下,必要的更改实在是太具有侵略性了。他们在进行测试时引入了太多的风险。所以,也许 Isolator++ 可能物有所值。我们拭目以待……

【讨论】:

  • 是的,确实有。我在纽伦堡的 Embeddedworld 上看到了一些非常相似的东西,但由于我对它不感兴趣 - 我没有费心去记住它的名字
  • 谢谢@BЈовић!我会在“EmbeddedWorld & mock”周围做一些谷歌搜索,看看会发生什么。如果你记得这个名字,我很想知道它是什么。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多