2011-01-19 11 views

Respuesta

16

Una forma sencilla de comprobar si hay una llamada al destructor:

class MockFoo : public Foo { 
    ... 
    // Add the following two lines to the mock class. 
    MOCK_METHOD0(Die, void()); 
    virtual ~MockFoo() { Die(); } 
}; 

En su función de prueba:

MockFoo* foo = new MockFoo; 
    ... 
    { 
    EXPECT_CALL(*foo, Die()); 
    } 

Más detalles se pueden encontrar aquí: Mocking Destructors

3

A menos que seas pasando --gmock_catch_leaked_mocks=0, entonces gmock ya debería estar detectando cuando no se destruye un simulacro. El destructor es donde las expectativas insatisfechas se marcan como errores, por lo que gmock tiene soporte especial para detectar cuándo no se llama.

+0

Sin embargo, hay una advertencia: GMock * no detectará * simulacros filtrados que no tengan ninguna expectativa asociada (ON_CALL/EXPECT_CALL). Esto se debe a que la verificación de fugas se basa en información que se almacena en una entidad especial llamada registro GTest, y los simulacros sin expectativas no se registran en ella. – r5ha

Cuestiones relacionadas