使用非虚方法的类中的GMock和mocking构造函数

Gen*_*too 2 c++ gmock

我需要模拟一个只有非虚方法的类.这个类有一个拷贝构造函数.如何为此编写模拟方法.如果我只是使用,我会收到编译器错误

MOCK_METHOD1(classname, void(classname& source)); 
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Tob*_*olm 6

你不能用gmock模拟非虚函数.所以考虑的第一个选择是使函数成为虚拟的.如果你担心使功能虚拟化的性能开销确保这确实是一个问题(通过测量),通常原因不是.

如果不可能将函数设置为虚拟的替代解决方案是使用模板.有关技术和此问题的详细信息,请参阅此问题以了解使用它的优缺点.