googlemock:无法创建模拟类的对象

googlemock: object of mocked class cannot be created

本文关键字:模拟类 对象 创建 googlemock      更新时间:2023-10-16

我得到了一个使用speedInterface的类Car(它有一个参考(。
现在我想用Mock_SpeedInterface模拟速度接口。

class speedInterface
{
public:
    virtual ~speedInterface() {}
    virtual int GetSpeed(void) = 0;
};
class Mock_SpeedInterface : public speedInterface
{
public:
    MOCK_CONST_METHOD0(GetSpeed, int());
};
class Car 
{
public:
    Car(speedInterface& s) : Speedo(s) {}
    virtual ~Car() {}
    speedInterface& Speedo;
    ...
};
TEST(TestCar, Test1) {
    Mock_SpeedInterface mockSpeed;
...
}  

尝试创建 mockSpeed 会导致以下编译器错误:

错误 C2259 'Mock_SpeedInterface':无法实例化抽象类

恕我直言,类Mock_SpeedInterface不是一个抽象类,因为它"实现"了GetSpeed。为什么会出现此错误,如何防止此错误?

似乎MOCK_CONST_METHOD0(GetSpeed, int());是错误的。为了得到一个普通的答案,我将引用OP的评论:

更改它以MOCK_METHOD0修复它。