我正在为一个班级编写 GMOCK 测试用例:
class A{ .. void Text() .. };
现在 A 类的成员方法之一嵌入了 B 类类型的对象,并且还引用了静态成员方法:
void A::Text()
{
B bobj;
B::SMethod();
bobj->BMethod();
......
}
在这种情况下,我如何模拟 B 及其方法?
A
您可以测试从它派生的类,而不是 testing ,我们称之为TestableA
. 在A
makeText()
virtual
和 override 中使用B
. 另外,看看这个问题,了解更多关于如何使用静态方法模拟类的想法。
然而,最好的办法是打破现有之间的紧密相关性A
,并B
通过引入的接口(例如InterfaceB
),并将其注入Text()
。SMethod()
将成为接口的(非静态)成员。在生产中,您将注入ActualB
whereActualB::SMethod()
调用static
B::SMethod()
。在您将使用MockB::SMethod()
的测试中,根据测试需求量身定制。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句