使用 GMock,我如何验证一个类的析构函数是否被调用?除了将它包装在另一个类中之外,还有其他方法吗?
显而易见的方法EXPECT_CALL(object, ~classtype())
会产生编译器错误(gmock 无法生成名为 的模拟方法gmock_~classtype
)。
使用 GMock,我如何验证一个类的析构函数是否被调用?除了将它包装在另一个类中之外,还有其他方法吗?
显而易见的方法EXPECT_CALL(object, ~classtype())
会产生编译器错误(gmock 无法生成名为 的模拟方法gmock_~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_catch_leaked_mocks=0
,否则 gmock 应该已经检测到您何时未能销毁模拟。析构函数是将未满足的期望标记为错误的地方,因此 gmock 特别支持检测何时未调用它。