在源代码中使用gmock修改非虚拟函数

Change in source code using gmock for non virtual functions

本文关键字:修改 虚拟 函数 gmock 源代码      更新时间:2023-10-16

我们将通过Gmock库为非虚拟函数构建Mock函数,即高纯度依赖注入。我们发现我们需要模板化我们的产品代码来模拟非虚函数。

我的问题是,有没有办法在不改变源代码的情况下模拟非虚函数,即不将模板添加到类中。

谢谢,

~都

为了能够模拟出函数,您需要添加一个间接级别,在c++中(因为您正在使用GMock),您的选项是:

  • 使用虚方法
  • 通过模板使用高纯度的依赖注入,这是你试图避免的

标记非虚拟方法virtual在源代码修改方面是一个很小的成本,但以小的运行时开销为代价;然而,在拒绝它之前,您必须通过基准测试来证明将virtual标记添加到您的方法中会对您的软件性能产生重大影响,因为它是启用模拟和测试的最简单和最干净的方法。