13

使用 GMock,我如何验证一个类的析构函数是否被调用?除了将它包装在另一个类中之外,还有其他方法吗?

显而易见的方法EXPECT_CALL(object, ~classtype())会产生编译器错误(gmock 无法生成名为 的模拟方法gmock_~classtype)。

4

2 回答 2

23

检查析构函数调用的简单方法:

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());
  }

更多细节可以在这里找到: 模拟析构函数

于 2011-01-19T12:01:59.100 回答
4

除非您通过--gmock_catch_leaked_mocks=0,否则 gmock 应该已经检测到您何时未能销毁模拟。析构函数是将未满足的期望标记为错误的地方,因此 gmock 特别支持检测何时未调用它。

于 2012-04-17T15:36:38.953 回答