模拟非虚方法 C (gmock)

新手上路,请多包涵

我有课

class CSumWnd : public CBaseWnd
{

 private:
 bool MethodA()
}

请你能帮助如何模拟 MethodA() 而不做虚拟,我不明白高性能 依赖注入 的概念

原文由 Sasi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

这意味着您将不得不模板化您的生产代码。使用您的示例:

CSumWind 类定义:

 class CSumWnd : public CBaseWnd
{

 private:
 bool MethodA()
};

嘲笑 CSumWnd 类定义:

 class MockCSumWnd : public CBaseWnd
{

 private:
 MOCK_METHOD(MethodA, bool());
};

必须使用模拟类 CSumWind 测试的生产类。现在它变成模板以提供在生产代码中使用 CSumWind MockCSumWnd 和在测试中使用 --- 类。

 template <class CSumWndClass>
class TestedClass {
//...
   void useSumWnd(const CSumWndClass &a);

private:
  CSumWndClass sumWnd;
};

TestedClass 在生产中的实例化:

 TestedClass <CSumWnd> obj;

在测试可执行文件中实例化 TestedClass 对象:

 TestedClass <MockCSumWnd> testObj;

原文由 beduin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题