Significa Tendrás que adaptar tu código de producción. Usando su ejemplo:
CSumWind
definición de clase:
class CSumWnd : public CBaseWnd
{
private:
bool MethodA()
};
burló definición CSumWnd
clase:
class MockCSumWnd : public CBaseWnd
{
private:
MOCK_METHOD(MethodA, bool());
};
clase de producción que tienen que ser probado con la clase imitó CSumWind
. Ahora se convierte en una plantilla para proporcionar el uso de la clase CSumWind
en el código de producción y la clase MockCSumWnd
en las pruebas.
template <class CSumWndClass>
class TestedClass {
//...
void useSumWnd(const CSumWndClass &a);
private:
CSumWndClass sumWnd;
};
instanciación de TestedClass
en la producción:
TestedClass <CSumWnd> obj;
instanciación del objeto en TestedClass
ejecutable prueba:
TestedClass <MockCSumWnd> testObj;
para mantener su código de 'producción' limpia, me parece útil haz esto: plantilla clase TestedClassTemplate {...}, y luego haz typedef TestedClassTemplate TestedClass; –
smehmood
Consulte http://stackoverflow.com/q/1127918/49972 para obtener información sobre las consecuencias de hacer lo que propone. –
Estoy frente a un problema en 'MOCK_METHOD (MethodA, bool());' https://stackoverflow.com/questions/46542373/how-to-mock-non-virtual-methods-using-googlemock?noredirect=1#comment80038793_46542373 Me aparece un error especificado en la pregunta anterior – CMouse