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は、呼び出されていないことを検出するための特別なサポートを備えています。