我已经开始使用GTest (Google Test)为我正在工作的一个c++项目。我有一个类,严重依赖于MFC (CFile, CObject, CString等)。
我如何打破对MFC的依赖(或最小化它们),所以我不必创建虚拟MFC对象只是为了运行我的测试?我想测试我的方法没有MFC功能。
下面是我要测试的方法的一个例子:
// DumpContext class inherits from CDumpContext
void MyClass::Print(DumpContext &dc)
{
// MyClass::Print real work goes here :
...
}
据我所知,MFC缺乏接口这一事实使得它很难被模拟。作为一种替代方案,您可以从依赖项中继承,并尝试充分利用它。在您的示例中,您可以使用已经存在的CMemFile,它在构造时不需要任何东西,并允许您访问结果。
在其他情况下,你必须自己发明类似的东西。
class MyClass
{
public:
void Print(CDumpContext &dc) {
dc.DumpAsHex(5592);
return;
}
};
TEST(Demo_Test,MyClass)
{
CMemFile File;
CDumpContext DumpContext_Stubb(&File);
MyClass Class;
Class.Print(DumpContext_Stubb);
EXPECT_GT(File.GetLength() ,0); // Do some test on the result
}