Я пытаюсь имитировать интерфейс 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.
Кто-нибудь знает, что я пропустил?