模拟非虚方法C++(gmock)

Sas*_*asi 14 c++ mocking gmock

我有课

class CSumWnd : public CBaseWnd
{

 private:
 bool MethodA()
}
Run Code Online (Sandbox Code Playgroud)

请你能帮忙如何模拟MethodA()而不做虚拟,我不明白hi-perf依赖注入的概念

bed*_*uin 16

这意味着您必须模拟生产代码.使用你的例子:

CSumWind 类定义:

class CSumWnd : public CBaseWnd
{

 private:
 bool MethodA()
};
Run Code Online (Sandbox Code Playgroud)

模拟CSumWnd类定义:

class MockCSumWnd : public CBaseWnd
{

 private:
 MOCK_METHOD(MethodA, bool());
};
Run Code Online (Sandbox Code Playgroud)

生产类必须用模拟类测试CSumWind.现在,在测试中提供CSumWind在生产代码和MockCSumWnd类中使用类的模板.

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

private:
  CSumWndClass sumWnd;
};
Run Code Online (Sandbox Code Playgroud)

TestedClass生产实例化:

TestedClass <CSumWnd> obj;
Run Code Online (Sandbox Code Playgroud)

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

TestedClass <MockCSumWnd> testObj;
Run Code Online (Sandbox Code Playgroud)