【发布时间】:2018-05-16 06:01:39
【问题描述】:
我有一个类继承自另一个类,如下所述:
class A
{
public:
virtual void Show(){}
};
class B : public A
public:
void BMethod1(){Show()}
};
现在我正在为 B 类编写测试用例 - 所以我模拟了 A 类:
class MockA : public A
{
MOCK_METHOD0(Show, void());
};
下面是我的谷歌测试框架测试用例:
TEST(BTEST , ShowMethod)
{
B bobj;
MockA aobj;
EXPECT_CALL(aobj , Show());
bobj.BMethod1(); // updated as from bobj.METHOD0()
}
但是测试用例正在调用实际的 A::Show() 实现——在这种情况下如何调用 MockA::Show() 的 Mocked 版本?
====================更新========================== =======
下面的实现对我有用:
class A
{
public:
virtual void Show(){}
};
class B : public A
public:
void BMethod1(){Show()}
};
class BMock : public B
{
public:
MOCK_METHOD0(Show, void());
};
现在使用 BMock 对象来测试你 B 类所需的方法
【问题讨论】:
-
你可以更改
class B吗? -
如果它解决了问题,我可以,并且还想验证是否存在其他机制