C++ 使用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(

使用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());
  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的链接已修复。