Я начал использовать HippoMocks для написания юнит-тестов. Я хотел бы знать, возможно ли издеваться над не виртуальными методами класса?
Первый взгляд на код, похоже, указывает на то, что инфраструктура поддерживает только виртуальные методы. Но так как он поддерживает макетирование простых функций C, то должно быть возможно сделать то же самое для методов не виртуальных классов.
Есть ли способ достичь этого?
Это не невозможно, но это приведет к очень странным механизмам использования — или к невозможности обеспечения безопасности потоков.
С-функции постоянно выдумываются. В этом случае он всегда перенаправляет на макет, вы больше не можете вызвать оригинал.
Виртуальные функции C ++ только макетируются для запрошенного объекта, и любой другой объект все еще будет иметь обычную функцию там.
Не виртуальные функции C ++ выглядят как виртуальные функции, но могут быть надуманными только на уровне класса. Также очень вероятно, что ваш компилятор встроит эти функции, что вряд ли будет надежным.
У меня был патч от кого-то, кто просто применил его вслепую, и он страдал от описанных проблем. Вы должны быть на 100% уверены, что любой доступ к этой функции-члену не является встроенным, что практически невозможно.