如何使用 GTest 测试严重依赖 MFC 的方法
我已经开始将 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 :
...
}
I've started to use GTest (Google Test) for a C++ project I'm working on. I have one class that depends heavily on MFC (CFile, CObject, CString, etc.).
How can I break the dependencies on MFC (or minimize them) so I don't have to create dummy MFC objects just to run my tests? I want to test what my methods do not MFC functionnalities.
Here is an example of the kind of method I have to test :
// DumpContext class inherits from CDumpContext
void MyClass::Print(DumpContext &dc)
{
// MyClass::Print real work goes here :
...
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
据我所知,MFC 缺乏接口这一事实使得它很难模拟。
作为替代方案,您可以从依赖项继承并尝试充分利用它。
在您的示例中,您可以使用已经存在的 CMemFile,它在构造时不需要任何内容并允许您访问结果。
在其他情况下,你必须自己发明类似的东西。
As far as I can understand, the fact that MFC lacks interfaces makes it difficult to mock.
As an alternative you can inherit from a dependency and try to make the best out of it.
In your example you can use the already existing CMemFile which doesn't require anything when constructing and lets you access the result.
In other cases you have to invent something similar yourself.