Ris*_*abh 6 c++ unit-testing mocking gmock
模拟类可以从googlemock中的另一个模拟类继承吗?如果是,那么请帮助我理解为什么这不起作用.
class IA
{
public:
virtual int test1(int a) = 0;
};
class IB : public IA
{
public:
virtual float test2(float b) = 0;
};
class MockA : public IA
{
public:
MOCK_METHOD1(test1, int (int a));
};
class MockB : public MockA, public IB
{
public:
MOCK_METHOD1(test2, float (float b));
};
Run Code Online (Sandbox Code Playgroud)
我得到cannot instantiate abstract class编译器错误MockB但不是MockA
如果您计划使用多重继承,则应使用虚拟继承.
下一个示例编译并链接正常:
class IA
{
public:
virtual int test1(int a) = 0;
};
class IB : virtual public IA
{
public:
virtual float test2(float b) = 0;
};
class MockA :virtual public IA
{
public:
int test1(int a)
{
return a+1;
}
};
class MockB : public MockA, public IB
{
public:
float test2(float b)
{
return b+0.1;
}
};
int main()
{
MockB b;
(void)b;
}
Run Code Online (Sandbox Code Playgroud)
这只是对您的示例的一个小修改