googletest - узнать, где был сделан неожиданный звонок - PullRequest
0 голосов
/ 25 февраля 2019

Я запускаю несколько юнит-тестов в googletest.Я ожидаю определенные вызовы для фиктивной функции (EXPECT_CALL(*rtosMock, xQueueGenericSend( arg , _, _, _)).Times(AtLeast(1));) с некоторыми другими значениями для arg.Я получаю звонок с неожиданным значением.

unknown file: Failure

Unexpected mock function call - returning default value.
      Function call: xQueueGenericSend(NULL, 0x7fff38c99e80, 100, 0)
           Returns: 0
Google Mock tried the following 24 expectations, but none matched:

test.cpp:95: tried expectation #0: EXPECT_CALL(*rtosMock, xQueueGenericSend( arg , _, _, _))...
Expected arg #0: is equal to 0x561fede86f74
Actual: NULL
Expected: to be called at least once
Actual: called twice - satisfied and active
[...]

В консоли теперь показано, какие значения он ожидал, а какие - нет, но не там, где был сделан неожиданный вызов.Есть ли способ узнать, откуда поступил неожиданный вызов (например, распечатать файл, номер строки или стек вызовов), а затем пройти через программу?

1 Ответ

0 голосов
/ 27 февраля 2019

Из документации: https://github.com/google/googletest/blob/master/googlemock/docs/FrequentlyAskedQuestions.md#i-cant-figure-out-why-google-mock-thinks-my-expectations-are-not-satisfied--what-should-i-do

Если вы запустите свою тестовую программу с --gmock_verbose=info, GoogleMock будет печатать трассировку стека после каждого вызова метода имитации.Это может привести к огромным результатам, особенно с большими тестами.Возможно, вы захотите ограничить свои тесты определенным (то есть провальным) с помощью флага --gtest_filter= или установки переменной окружения GTEST_FILTER.Он использует регулярные выражения тестов, которые вы хотите запустить.

Вы также можете запустить свой код в отладчике и установить точку останова на вызове xQueueGenericSend, а также проверять каждый вызов, чтобы увидеть, когда происходит сбой.,После этого вы сможете сузить возможные места возникновения ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...