GMock EXPECT_CALL не удалось, но тест возвращает ОК при насмешке C функций - PullRequest
1 голос
/ 02 августа 2020

Я пытаюсь имитировать интерфейс libusb C на основе ответа здесь: { ссылка }

Тесты работают нормально, если я действительно вызываю ожидаемые функции, но когда вызов функции закомментирован, тест показывает ошибку (счетчик вызовов не совпадает), но окончательный результат теста в порядке.

Я нашел некоторую информацию о тестировании с помощью stati c объекты могут вызвать это, бит в ответе mathandi , только указатель stati c, а объект уничтожается в деструкторе TestFixture. Также пытался создать и уничтожить объект внутри функции TEST_F, но это не помогло.

Это может быть ошибка GMock, но я очень сомневаюсь в этом. Вот код, чтобы воспроизвести это:

class Context {
  libusb_context* context;
public:
  Context() {
    // Function call is commented out, should cause an error
    // libusb_init(&context);
  }
  ...
}

И тест:

TEST_F(LibusbTests, contextConstructTest) {
  EXPECT_CALL(*libusbMock, libusb_init(Ne(nullptr)))
    .WillOnce(Return(0));
  EXPECT_NO_THROW({ Libusb::Context(); });
}

Я не включил другой код, необходимый для тестирования C бесплатной функции, но мой libusbMock Указатель совпадает с указателем _bcm2835libMock у mathandi.

Кто-нибудь знает, что я пропустил?

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