C++, Google Tests, утечки макетных объектов и testing::Mock::AllowLeak()

112
09 сентября 2021, 05:40

Я пытаюсь поправить тесты (Google Tests), которые писал не я, и у меня есть несколько вопросов, на которые я не смог найти ответы.

Вопросы следующие:

  1. Каким механизмом Google Tests обнаруживает утечку макетного объекта?

  2. Для чего нужна функция (предположительно, функция) testing::Mock::AllowLeak()?

  3. Есть ли разница, передавать в ON_CALL() / EXPECT_CALL() сырой указатель или умный?

Буду очень благодарен за любую помощь, спасибо.

Answer 1

Там имеется глобальный реестр для таких объектов. Они заносятся в него при использовании, и убираются при разрушении. В деструкторе самого регистра подсчитываются утечки и печатается соотв. предупреждения. из исходников:

A global registry holding the state of all mock objects that are alive. A mock object is added to this registry the first time Mock::AllowLeak(), ON_CALL(), or EXPECT_CALL() is called on it. It is removed from the registry in the mock object's destructor.
class MockObjectRegistry

READ ALSO
Нужна помощь с C++

Нужна помощь с C++

Почему выводится адрес, а не числа?

85
C++ std::list использование памяти

C++ std::list использование памяти

Только начинаю работать с std::list в Arduino (компилятор C++ 11) Нужно положить в std::list класс:

103
Как сделать progress bar?

Как сделать progress bar?

Выполняется сортировка в потокахВ любой момент из переменной last_index я могу узнать сколько отсортированных элементов уже есть

258
Как выводить элементы массива в приоритетном порядке , создавая кучу из массива

Как выводить элементы массива в приоритетном порядке , создавая кучу из массива

Чтобы вытащить элементы из вектора в приоритетном порядке, кроме как сортировать вектор, можно еще превратить его в кучуВот такая простенькая...

76