C++ 使用GMock验证析构函数调用
使用GMock,如何验证类的析构函数是否被调用?除了去,还有别的办法吗C++ 使用GMock验证析构函数调用,c++,unit-testing,mocking,googlemock,C++,Unit Testing,Mocking,Googlemock,使用GMock,如何验证类的析构函数是否被调用?除了去,还有别的办法吗 显而易见的方法,EXPECT\u CALL(object,~classtype())会产生编译器错误(gmock无法生成名为gmock\uu~classtype的模拟方法)。检查析构函数调用的简单方法: class MockFoo : public Foo { ... // Add the following two lines to the mock class. MOCK_METHOD0(Die, void(
显而易见的方法,
EXPECT\u CALL(object,~classtype())
会产生编译器错误(gmock无法生成名为gmock\uu~classtype
的模拟方法)。检查析构函数调用的简单方法:
class MockFoo : public Foo {
...
// Add the following two lines to the mock class.
MOCK_METHOD0(Die, void());
virtual ~MockFoo() { Die(); }
};
在测试函数中:
MockFoo* foo = new MockFoo;
...
{
EXPECT_CALL(*foo, Die());
}
更多详细信息可在此处找到:
除非您传递的是
--gmock\u catch\u leaked\u mocks=0
,否则gmock应该已经检测到您未能销毁模拟。析构函数是将未满足的期望标记为错误的地方,因此gmock特别支持检测何时未调用它。不过有一个警告:gmock不会检测没有附加任何期望的泄漏模拟(ON_CALL/EXPECT_CALL)。这是因为泄漏检查是基于存储在名为GTest注册表的特殊实体中的信息进行的,没有期望的模拟不会在其中注册。该链接现在给出404。到cookbook的链接已修复。