我有一个使用speedInterface的类Car(它有一个参考) 现在我想用Mock_SpeedInterface模拟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':无法实例化抽象类
IMHO类Mock_SpeedInterface不是一个抽象类,因为它"实现" GetSpeed。 为什么我会收到此错误,如何防止此错误?
答案 0 :(得分:0)
似乎 MOCK_CONST_METHOD0(GetSpeed, int());
是错误的。为了得到一个普通的答案,我将引用 OP 的评论:
将其更改为 MOCK_METHOD0 修复它。