我们正在通过 Gmock 库为非虚函数构建 Mock 函数,即高性能依赖注入。我们发现我们需要模板化我们的生产代码来模拟非虚函数。
我的问题是,有没有办法在不更改源代码的情况下模拟非虚函数,即不将模板添加到类中。
谢谢,
~曼达
我们正在通过 Gmock 库为非虚函数构建 Mock 函数,即高性能依赖注入。我们发现我们需要模板化我们的生产代码来模拟非虚函数。
我的问题是,有没有办法在不更改源代码的情况下模拟非虚函数,即不将模板添加到类中。
谢谢,
~曼达
为了能够模拟出函数,您需要添加一个间接级别,并且在 C++ 中(因为您使用的是 GMock),您的选择是:
就源代码修改而言,标记非虚拟方法virtual
的成本很小,但代价是运行时开销很小;但是,您必须通过基准测试证明将virtual
标记添加到您的方法中会在拒绝之前对您的软件的性能产生重大影响,因为它是启用模拟和测试的最简单和最干净的方法。