使用GMock,我如何验证一个类的析构函数被调用?有没有办法,除了wrap it in another class?使用GMock验证析构函数调用
显而易见的方法,EXPECT_CALL(object, ~classtype())
会产生编译器错误(gmock不能产生名为gmock_~classtype
的模拟方法)。
使用GMock,我如何验证一个类的析构函数被调用?有没有办法,除了wrap it in another class?使用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());
}
更多详细信息可以在这里找到: Mocking Destructors
除非你是通过--gmock_catch_leaked_mocks=0
,那么当你不能摧毁模拟器时,gmock应该已经在检测。析构函数是不满意的期望被标记为错误,所以gmock特别支持检测何时不被调用。
有一个警告,但:GMock将*不*检测泄漏的模拟,没有任何附加的预期(ON_CALL/EXPECT_CALL)。这是因为泄漏检查是基于存储在称为GTest注册表的特殊实体中的信息,而没有预期的嘲讽未在其中注册。 – r5ha 2017-06-30 16:51:09