Google Test Ожидает вызова от функцииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Google Test Ожидает вызова от функции

Сообщение Anonymous »


Предположим, у меня есть простой тест с макетами.

#include "boost/interprocess/detail/interprocess_tester.hpp" #include #include использование пространства имен::testing; структура IInterface { метод виртуальной пустоты (int foo) = 0; }; структура SimpleMock: общедоступный IInterface { MOCK_METHOD1 (метод, void (int foo)); }; struct TestFixture: общедоступный тест { ТестФикстура() { // Не обращайте внимания на другие неожиданные вызовы EXPECT_CALL(макет, метод(_)).Times(AnyNumber()); } void setupExpectation (целое число данных) { EXPECT_CALL(макет, метод(данные)).Times(1); } SimpleMock макет; }; TEST_F(TestFixture, SimpleTest) { установкаОжидание (2); макет.метод(2); установкаОжидание (5); макет.метод(3); // не оправдает ожидания } Это завершится неудачно, поскольку сообщение ниже ссылается на вспомогательный метод, что затрудняет отладку или определение того, какое ожидание не удалось, поскольку я не вижу строку, которую я вызвал, setupExpectation или фактическое значение аргумента. .

test_HarmonicTherapyStateMachineAit.cpp:27: Ошибка Фактическое количество вызовов функций не соответствует EXPECT_CALL(mock, метод(данные)... Ожидается: будет вызван один раз Актуально: ни разу не звонил - неудовлетворенный и активный. Обратите внимание, что мой реальный вариант использования включает более сложные вызовы ожиданий, и я думаю, что это требует разделения их на отдельный метод (и наличия нескольких ожиданий в одном тесте). Однако я не знаю, как получить более информативное сообщение об ошибке.

Я читал о http://google.github.io/googletest/gmoc ... ock-prints. Однако это дает больше информации, чем мне действительно нужно, а именно номер строки функции, которая вызывает setupExpectation.

Я также только что попробовал создать МАКРОС, чтобы оправдать общие ожидания. В этом простом случае это было бы легко. Однако мой реальный вариант использования имеет более сложную логику, которую я бы не хотел помещать в макрос.

Даже если бы я мог сделать что-то вроде EXPECT_CALL(...).Times(1)
Ответить

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

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

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

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

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