【问题标题】:GMock and mocking constructors in a class with non virtual methods具有非虚拟方法的类中的 GMock 和模拟构造函数
【发布时间】:2011-05-17 16:25:21
【问题描述】:

我需要模拟一个只有非虚拟方法的类。这节课 有一个复制构造函数。我如何为此编写一个模拟方法。我得到一个 如果我只使用

编译器错误
MOCK_METHOD1(classname, void(classname& source)); 

提前致谢。

【问题讨论】:

标签: c++ gmock


【解决方案1】:

您不能使用 gmock 模拟非虚拟函数。所以要考虑的第一个替代方案是使函数虚拟化。如果您担心使函数虚拟化的性能开销,请确保这确实是一个问题(通过测量),因为通常不是。

如果不可能使函数虚拟化,另一种解决方案是使用模板。有关此技术的详细信息,请参阅this question,有关使用它的利弊,请参阅this question

【讨论】:

  • 或者使用预处理器有条件地使您的函数在测试构建中虚拟化,并在生产构建中保持它们不变(非虚拟化)。两全其美。但是要记住一件事:由于切片,它会与多态值成员中断。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 2012-09-02
  • 2018-02-09
  • 2016-04-03
  • 2011-11-16
相关资源
最近更新 更多