Я пытаюсь издеваться над интерфейсом libusb C на основе ответа здесь: https://stackoverflow.com/a/41640864/1752391< /а>
Тесты выполняются нормально, если я действительно вызываю ожидаемые функции, но когда вызов функции закомментирован, тест показывает ошибку (количество вызовов не совпадает), но окончательный результат теста в порядке.
Я нашел некоторую информацию о том, что тестирование со статическими объектами может вызвать это, бит в ответе mathandi только указатель является статическим, и объект уничтожается в деструкторе 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.
Кто-нибудь знает, что я пропустил?