【发布时间】:2020-09-16 18:52:36
【问题描述】:
在下面的代码中,我尝试在基本模型上解释我的问题。
class A
{
public:
A() {}
virtual void foo() {}
virtual ~A(){}
//...
};
class B : public A{
public:
B(){}
//...
//does not contain the override function foo()
};
class MustBeTested{
public:
MustBeTested(){
//...
}
void function()
{
m_elem->foo();
//...
}
private:
B* m_elem;
};
class Mock : public B {
public:
Mock() {}
MOCK0(foo, void());
};
//test function from above class
void TestFunction
{
Mock* dummy = new Mock;
EXPECT_CALL(*dummy, foo()).Times(1);
//i know it is wrong becase the called method is A::foo();
}
我有一个包含虚方法的基本类 A。 派生类 B 不再包含被覆盖的方法 foo()。 MustBeTested 类包含要测试的函数,类成员类型为 B *。 最初没有看我开始制作一个从 B 派生的 Mock 类来模拟 EXPECT_CALL()。 我意识到这是不可能的,因为 A :: foo () 中的方法总是会被调用。
我的问题是,是否有一种解决方法而不更改 A 类或 B 类代码?
【问题讨论】:
标签: c++ unit-testing googletest googlemock