Gmock WillbyDefault запустил, несмотря на совпадение weals_callC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Gmock WillbyDefault запустил, несмотря на совпадение weals_call

Сообщение Anonymous »

Я использую WillbyDefault (Testing :: Throw (...)) трюк, чтобы завершить тест на раннем этапе, как описано в https://stackoverflow.com/a/79534623/28945355
Однако, кажется, случайным образом приводит к тому, что в некоторых случаях вызывает тест, чтобы завершить все ожидания, даже если все ожидают. Вот минимальная резо, я смог найти: < /p>

Код: Выделить всё

#include 
#include 

struct foo_mock {
MOCK_METHOD(void, foo, (int a));
};

void do_test(foo_mock& mock) {
mock.foo(1);
mock.foo(2);
mock.foo(1);
}

TEST(foo, test) {
testing::StrictMock mock{};
testing::InSequence seq{};

ON_CALL(mock, foo).WillByDefault(testing::Throw(std::runtime_error{ "unmatched" }));
EXPECT_CALL(mock, foo(1)).RetiresOnSaturation();
EXPECT_CALL(mock, foo(2)).RetiresOnSaturation();
EXPECT_CALL(mock, foo(1)).RetiresOnSaturation();
EXPECT_NO_THROW(do_test(mock));
}

int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Запустите его на Godbolt
Если я прокомментирую линию WillByDefault , тест проходит, поскольку фактическая последовательность вызова 1, 2, 1 соответствует ожидаемому. Поскольку не существует неожиданных вызовов, подтвержденных strictmock , то Afaik WillbyDefault никогда не следует вызывать. Если я изменю действие по умолчанию, на то, что он не обращается к тому подобному [] (auto) {printf ("unmanceed \ n"); } , затем тестируется проходы, но печатает сообщение 3 раза, сбивая меня с толку.
Что -то я делаю неправильно?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... xpect-call
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»