我们正在通过 Gmock 库为非虚函数构建 Mock 函数,即 hi-perf 依赖注入(inject)。 我们发现我们需要模板化我们的生产代码来模拟非虚函数。
我的问题是,有没有办法在不更改源代码的情况下模拟非虚函数,即不将模板添加到类中。
谢谢,
~普通话
最佳答案
为了能够模拟函数,您需要添加一个间接级别,在 C++ 中(因为您使用的是 GMock),您的选项是:
- 使用虚方法
- 使用hi-perf dependency injection通过模板,这是您试图避免的
将非虚方法标记为virtual
就源代码修改而言是一个很小的成本,但以小的运行时开销为代价;但是,您必须通过基准测试证明将 virtual
标记添加到您的方法中会对您的软件性能产生重大影响,然后再拒绝它,因为这是启用模拟和测试的最简单和最干净的方法。
关于c++ - 使用 gmock 更改非虚函数的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872058/