在源代码中使用gmock修改非虚拟函数
Change in source code using gmock for non virtual functions
我们将通过Gmock库为非虚拟函数构建Mock函数,即高纯度依赖注入。我们发现我们需要模板化我们的产品代码来模拟非虚函数。
我的问题是,有没有办法在不改变源代码的情况下模拟非虚函数,即不将模板添加到类中。
谢谢,
~都
为了能够模拟出函数,您需要添加一个间接级别,在c++中(因为您正在使用GMock),您的选项是:
- 使用虚方法
- 通过模板使用高纯度的依赖注入,这是你试图避免的
标记非虚拟方法virtual
在源代码修改方面是一个很小的成本,但以小的运行时开销为代价;然而,在拒绝它之前,您必须通过基准测试来证明将virtual
标记添加到您的方法中会对您的软件性能产生重大影响,因为它是启用模拟和测试的最简单和最干净的方法。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 虚拟决赛作为安全
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- 独立读取-修改-写入顺序
- 如何在C++中获得"静态纯虚拟"功能?
- C++无法定义虚拟函数 OUTER 类和头文件
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我可以通过引用修改常量返回
- 对于结构,表达式必须是可修改的ivalue
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 修改创建帐户程序
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- 修改虚拟函数中的基类
- 在源代码中使用gmock修改非虚拟函数
- 嵌入的铬 - 在不扩展类C++的情况下修改虚拟方法参数值