Как остановить gtest на первом неожиданном вызове GmockC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как остановить gtest на первом неожиданном вызове Gmock

Сообщение Anonymous »

Существует ли эквивалент утверждать _* для ожидания_Калл , который заканчивает тест на первом неинтересном/непревзойденном вызове? Если какой -либо вызов отсутствует или неверно, каждый после этого, вероятно, потерпит неудачу из -за смещения. Это генерирует много шума в результатах тестирования, что затрудняет поиск исходного сбоя. < /P>
Пример выпуска: < /p>
#include
#include
#include

void hw_register_write(uint32_t, uint32_t) {}

class hw_register_access {
public:
virtual void write(uint32_t address, uint32_t value) = 0;
};

class hw_registers : public hw_register_access {
public:
void write(uint32_t address, uint32_t value) override {
return hw_register_write(address, value);
}
};

class mock_registers : public hw_register_access {
public:
MOCK_METHOD(void, write, (uint32_t address, uint32_t value), (override));
};

void program_foo(hw_register_access& reg) {
reg.write(0x10, 0x123);
reg.write(0x10, 0x456); // Bug, want to stop immediately
for (size_t i = 0; i < 10; i++) {
reg.write(0x20, 0x789); // Don't want noise from this
}
}

TEST(programming_sequence_test, program_foo) {
testing::StrictMock mock{};
testing::InSequence seq{};

EXPECT_CALL(mock, write(0x10, 0x123));
EXPECT_CALL(mock, write(0x11, 0x456));
EXPECT_CALL(mock, write(0x20, 0x789)).Times(10);

program_foo(mock);
}

Потому что reg.write (0x20, 0x789) больше не соответствует ожиданиям из -за невыполненных предпосылок, это генерирует более 300 строк ошибок, скрывая проблему с корнем:
Unexpected mock function call - returning directly.
Function call: write(16, 1110)
...
Expected arg #0: is equal to 17
Actual: 16


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

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

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

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

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

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