Я довольно новый разработчик программного обеспечения, который в настоящее время работает над добавлением модульных тестов к существующему проекту С++, который начался несколько лет назад. Из-за нетехнической причины мне не разрешено изменять какой-либо существующий код. Базовый класс всех моих модулей содержит множество методов для настройки/получения данных и общения с другими модулями.
Поскольку я просто хочу тестировать каждый отдельный модуль, я хочу иметь возможность использовать консервированные значения для всех моих методов взаимодействия между модулями. То есть для метода Ping(), который проверяет, активен ли другой модуль, я хочу, чтобы он возвращал true или false, основываясь на том, какой тест я делаю. Я изучал Google Test и Google Mock, и он поддерживает насмешливые не виртуальные методы. Однако описанный подход (http://code.google.com/p/googlemock/wiki/CookBook#Mocking_Nonvirtual_Methods) требует от меня "templatize" исходных методов для использования в реальных или макетных объектах. Я не могу пойти и templatize мои методы в базовом классе из-за требования, упомянутого ранее, так что мне нужен другой способ издеваться над этими виртуальными методами
В принципе, методы, которые я хочу высмеять, находятся в каком-то базовом классе, модули, которые я хочу использовать unit test, и создают mocks из производных классов этого базового класса. Между базовым модулем модуля и модулями, которые я хочу проверить, есть промежуточные модули.
Буду признателен за любые советы!
Спасибо,
JW
EDIT: более конкретные примеры
Мой базовый класс позволяет сказать rootModule, модуль, который я хочу проверить, - leafModule. Существует промежуточный модуль, который наследует от rootModule, leafModule наследует от этого промежуточного модуля.
В моем модуле leafModule я хочу протестировать метод doStuff(), который вызывает не виртуальный GetStatus (moduleName), определенный в классе rootModule. Мне нужно как-то заставить GetStatus() вернуть выбранное консервированное значение. Mocking для меня новичок, так что использовать макет объектов даже правильный подход?