【发布时间】:2011-12-19 12:22:07
【问题描述】:
我已经开始将 GTest(Google 测试)用于我正在处理的 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 类,则不能从项目中删除该依赖项。确保您测试您的代码而不是 MFC 的方法是编写 在您的测试中的代码,以便您测试您的代码而不是 MFC。
-
我的类不是 MFC 的后代,而是使用 MFC 类的引用和局部变量。在给定的示例中,我必须在调用 Print 方法之前创建一个 DumpContext。要创建一个 CDumpContext(我的方法可以使用),我必须将一个 CFile 传递给 CDumpContext 构造函数。要创建一个 CFile,我需要一个通过调用 CreateFile 函数等创建的句柄……我宁愿只将一个模拟 DumpContext 传递给我的方法,而不是使用 MFC 类来创建一个“真实的”CDumpContext。现在更有意义了吗?谢谢!
标签: c++ mfc tdd googletest