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)