2011-01-19 83 views

回答

16

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

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

3

除非你是通过--gmock_catch_leaked_mocks=0,那么当你不能摧毁模拟器时,gmock应该已经在检测。析构函数是不满意的期望被标记为错误,所以gmock特别支持检测何时不被调用。

+0

有一个警告,但:GMock将*不*检测泄漏的模拟,没有任何附加的预期(ON_CALL/EXPECT_CALL)。这是因为泄漏检查是基于存储在称为GTest注册表的特殊实体中的信息,而没有预期的嘲讽未在其中注册。 – r5ha 2017-06-30 16:51:09