我如何测试严重依赖于GTest的MFC的方法

时间:2011-11-01 13:32:23

标签: c++ mfc tdd googletest

我已经开始将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 :
    ...

}

1 个答案:

答案 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
}