Использование GMock для проверки вызова деструктора - PullRequest
10 голосов
/ 19 января 2011

Используя GMock, как я могу проверить, что деструктор класса вызывается?Есть ли способ, кроме , обернуть его в другой класс ?

Очевидный метод EXPECT_CALL(object, ~classtype()) выдает ошибку компилятора (gmock не может создать фиктивный метод с именем gmock_~classtype).

Ответы [ 2 ]

16 голосов
/ 19 января 2011

Простой способ проверить вызов деструктора:

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

Более подробную информацию можно найти здесь: Насмешливые деструкторы

3 голосов
/ 17 апреля 2012

Если вы не передаете --gmock_catch_leaked_mocks=0, то gmock уже должен обнаруживать, когда вы не можете уничтожить макет.Деструктор - это место, где неудовлетворенные ожидания помечаются как ошибки, поэтому gmock имеет специальную поддержку для обнаружения, когда он не вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...