test google c++ mocking googletest googlemock

c++ - test - Google Mock Destructor



call destructor c++ (1)

Estoy tratando de familiarizarme con el marco de burla de Google para poder aplicar más fácilmente algo de TDD a mi desarrollo en C ++. Tengo la siguiente interfaz:

#include <string> class Symbol { public: Symbol (std::string name, unsigned long address) {} virtual ~Symbol() {} virtual std::string getName() const = 0; virtual unsigned long getAddress() const = 0; virtual void setAddress(unsigned long address) = 0; };

Quiero verificar que se llame al destructor cuando se elimina una instancia. Entonces tengo la siguiente clase de MockSymbol:

#include "gmock/gmock.h" #include "symbol.h" class MockSymbol : public Symbol { public: MockSymbol(std::string name, unsigned long address = 0) : Symbol(name, address) {} MOCK_CONST_METHOD0(getName, std::string()); MOCK_CONST_METHOD0(getAddress, unsigned long()); MOCK_METHOD1(setAddress, void(unsigned long address)); MOCK_METHOD0(Die, void()); virtual ~MockSymbol() { Die(); } };

Nota: He omitido los guardias de inclusión en el cuadro anterior, pero están en mis archivos de encabezado.

No he podido llegar al punto en el que estoy probando algo todavía. Tengo lo siguiente:

#include "gmock/gmock.h" #include "MockSymbol.h" TEST(SymbolTableTests, DestructorDeletesAllSymbols) { ::testing::FLAGS_gmock_verbose = "info"; MockSymbol *mockSymbol = new MockSymbol("mockSymbol"); EXPECT_CALL(*mockSymbol, Die()); }

Cuando ejecuto mi prueba de corredor, mis otras pruebas se ejecutan y pasan como yo esperaba. Sin embargo, cuando se ejecuta la prueba anterior, aparece el siguiente error:

SymbolTableTests.cpp: 11: EXPECT_CALL (* mockSymbol, Die ()) invocado Error de segmentación (núcleo volcado)

He pasado las últimas horas buscando en Google y probando cosas diferentes, pero para saber de qué sirve. ¿Alguien tiene alguna sugerencia?


Encontré que establecer gtest_disable_pthreads en ON en mi configuración de compilación resuelve el problema.