我已经开始将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 :
...
}
答案 0 :(得分:1)
据我所知,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
}