#googletest #googlemock
#googletest #googlemock
Вопрос:
Я использую макет Google в качестве основы для тестирования системы реального времени, я хочу убедиться, что конфигурация датчиков выполняется правильно. Для этого я отправляю новую частоту на указанный датчик и ожидаю, что обратный вызов данных моего датчика будет вызываться x раз.
Из-за этого мне приходится отключать поток тестирования на несколько секунд, поэтому мой обратный вызов можно вызвать несколько раз.
Из-за этого ожидаемые вызовы не являются заданным числом, например, если я ожидаю, что мой обратный вызов будет вызываться один раз в секунду, и я сплю в потоке 5 секунд, на самом деле его можно вызвать от 4 до 6 раз, иначе тест будет слишком строгим.
В этом проблема, я не нашел способа проверить, находится ли ожидаемый вызов между 4 и 6, я попробовал следующее:
EXPECT_CALL(*handler,Data_Mock(_,_)).Times(::testing::AnyNumber());
EXPECT_CALL(*handler,Data_Mock(_,_)).Times(::testing::AtMost(6));
EXPECT_CALL(*handler,Data_Mock(_,_)).Times(::testing::AtLeast(4));
И
EXPECT_CALL(*handler,Data_Mock(_,_)).Times(::testing::AnyNumber());
EXPECT_CALL(*handler,Data_Mock(_,_)).Times(::testing::AtLeast(4));
EXPECT_CALL(*handler,Data_Mock(_,_)).Times(::testing::AtMost(6));
Ответ №1:
Попробуйте Between
из https://github.com/google/googletest/blob/master/googlemock/docs/cheat_sheet.md#cardinalities-cardinalitylist. Это как раз для того, чтобы утверждать, что данный вызов вызывается между m
и n
раз.
Комментарии:
1. Черт, я искал так много ключевых слов в этих документах, и по какой-то причине я не думал о поиске этого, спасибо, это сработало отлично: D