哪些模拟框架允许对遗留代码进行零更改?

时间:2014-07-14 18:00:22

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

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

  1. 它可以嘲笑任何东西。
  2. 它允许您在不更改遗留代码的情况下添加测试覆盖率(使用方法调用拦截和其他一些魔法)。无需在接口中拼接以添加测试。
  3. 缺点是Isolator ++是一种商业产品。我担心供应商锁定&这样。是否有其他框架具有相同的功能?也许是开源的东西?


    让我也排除了我在其他帖子中观察到的一个共同批评:" TypeMock鼓励糟糕的设计。你应该改进你的设计,而不是使用支持坏习惯的工具。" (我的释义)

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

1 个答案:

答案 0 :(得分:3)

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

对于C#代码,TypeMock Isolator确实有几个竞争对手:Telerik JustMock&微软假货。但是对于C ++,TypeMock Isolator ++是我唯一找到的。

对于这种情况下的任何人,我还建议阅读Michael Feather的书"有效地使用遗留代码"。它提供了许多实际的技巧,可以在不需要模拟活动对象的情况下进行测试,而Isolator可以让你这样做。也就是说,在某些情况下,我认为必要的变化过于简单。在进行测试时,他们会引入太多风险。所以,也许Isolator ++可能物有所值。我们会看到......