Google Test Ожидает вызова от функции ⇐ C++
-
Anonymous
Google Test Ожидает вызова от функции
Предположим, у меня есть простой тест с макетами.
#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)
Предположим, у меня есть простой тест с макетами.
#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)
Мобильная версия