c++ - 使用 gmock 更改非虚函数的源代码

标签 c++ virtual-functions googlemock

我们正在通过 Gmock 库为非虚函数构建 Mock 函数,即 hi-perf 依赖注入(inject)。 我们发现我们需要模板化我们的生产代码来模拟非虚函数。

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

谢谢,

~普通话

最佳答案

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

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

关于c++ - 使用 gmock 更改非虚函数的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872058/

相关文章:

c++ - 为什么 Google Mocks 发现这个函数调用不明确?

c++ - 将测试从 GoogleTest 升级到 GoogleMock (Ubuntu 14) 时出现与 pthread 相关的错误

c++ - 重构我的代码。我的标题(Header Guard Issues)

c++ - 错误 : LINK: fatal error LNK1561: entry point must be defined c++

c++ - 动态加载 jvm.dll 而不链接它

c++ - 将继承的类传递给 C++ 中的函数

c++ - 一种简洁的说法 "this class overrides all necessary methods to be non-abstract"

c++ - 无法在 C++ 中传递二维数组,这会导致错误无法将 int(*) 转换为 int*

c++ - 混淆是指针和虚函数的内存分配

c++ - 使用 googlemock 时出现 SEH 异常