googlemock:遗留代码类不是从抽象类继承的
googlemock : Legacy code classes do not inherit from abstract classes
我正在研究使用VS 8.0 的非托管C++应用程序的不同测试框架
看起来googlemock需要原始类从抽象类继承。抽象类然后被googlemock用作父类来生成mock。
在我的遗留代码中,首先,我的解决方案中的原始类不是从抽象类派生的,而是非抽象类,并且它们中并不总是有虚拟函数。此外,在大多数情况下,都有一个父级链,比如D类是从C类派生而来的,而C类是从B类派生的,等等。因此,在这种情况下创建接口将更加复杂,因为在mock对象中,所有虚拟函数都需要实现。
所以我只想知道我对googlemock和测试的理解是否正确,是否有一个n选项可以不创建抽象类,只使用现有的类来创建mock。
谢谢
看起来googlemock需要原始类从抽象类。然后将抽象类用作父类谷歌mock生成mock。
不,您对Google C++ Mocking Framework
的理解是错误的。从抽象中继承mocking类(您试图模拟的类)是设计建议,但不是技术要求。技术要求为:
- 成员函数必须是虚拟的(如果不是,则需要使用静态多态性)
- 将被调用的成员函数必须是公共函数
- mocking类的析构函数应该是虚拟的(对于普通析构函数来说不是必须的)
注意:正如您所看到的,您不需要担心不需要通过mock对象调用的成员函数。
在我的遗留代码中,首先,我的解决方案中的原始类不是派生自抽象类但非抽象类它们中并不总是虚拟函数。此外,在大多数情况下,有一系列的父母,比如D班从C类派生,从B类派生,依此类推
这不是问题,但您不需要调用非虚拟成员函数。
所以我只想知道我对谷歌模拟和测试的理解是否正确,如果有n选项不创建抽象类和只需按原样使用现有类即可创建mock。
正如我所说,你不需要担心基类抽象,但无论如何,如果你现有的代码不能满足要求,你需要修改它。有时对某些人来说,这是不可接受的。
相关文章:
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 抽象类析构函数与继承"Shutdown"函数
- C++的抽象类继承和构造函数的问题
- C++:抽象类继承和构造
- 抽象类 A 由类 C 继承"through"类 B "intermediary"。如何声明虚拟功能?
- 如何修复抽象类的迭代继承
- 具有继承类和函数的抽象类写入单独的向量c++
- 继承自C++中的抽象类
- C++抽象类和继承
- 从抽象类继承的类的实例
- googlemock:遗留代码类不是从抽象类继承的
- 在从抽象类继承的模板类中正确使用未定义的类型
- 从抽象类继承方法
- c'tor 和 d'tor 从抽象基础通过其他抽象类继承到具体
- 从抽象类继承的抽象方法是否存在任何性能问题
- 从两个抽象类继承
- 将抽象类继承与实例化模板混合
- c++抽象类继承
- 抽象类继承
- 从抽象类C++继承的对象的数组