Изменение исходного кода с использованием gmock для не виртуальных функций

Мы проходим через библиотеку Gmock, чтобы создать фиктивную функцию для невиртуальных функций, т. е. высокоэффективное внедрение зависимостей. Мы обнаружили, что нам нужно шаблонизировать наш производственный код для имитации не виртуальной функции.

Мой вопрос в том, есть ли способ издеваться над не виртуальными функциями без изменения исходного кода, то есть не добавлять шаблон в класс.

Спасибо,

~ Мандар


person mandy13    schedule 26.05.2014    source источник
comment
В вашем вопросе говорится: есть ли способ имитировать виртуальные функции, но вы имели в виду: есть ли способ имитировать не виртуальные функции?   -  person Misha Brukman    schedule 26.05.2014
comment
@MishaBrukman спасибо за ошибку. Мне нужно для не виртуальных функций   -  person mandy13    schedule 27.05.2014


Ответы (1)


Чтобы иметь возможность имитировать функции, вам нужно добавить уровень косвенности, а в С++ (поскольку вы используете GMock) ваши варианты:

Пометка невиртуальных методов virtual требует незначительных затрат с точки зрения модификации исходного кода, но достигается за счет небольших накладных расходов во время выполнения; однако вам придется продемонстрировать с помощью тестов, что добавление маркера virtual к вашим методам существенно влияет на производительность вашего программного обеспечения, прежде чем отклонять его, потому что это самый простой и чистый способ включения имитации и тестирования.

person Misha Brukman    schedule 27.05.2014