Есть небольшой трюк с компоновщиком, который вы можете использовать для решения этой проблемы. Если компоновщик находит класс, который вы хотите заменить для целей тестирования, в модуле компиляции, который принадлежит тестовому проекту, он не ищет его в DLL;)
Итак, что вам нужно сделать, это:
- Добавьте новый исходный файл (.cpp) в тестовый проект (= тот, который связывает и библиотеку GoogleTest и вашу DLL).
- В этом новом файле .cpp реализован поддельный класс. Убедитесь, что поддельная версия этого класса имеет точно такую же сигнатуру (то есть то же имя класса, пространство имен, методы).
- Реализуйте методы поддельного класса, чтобы они выполняли поддельное поведение.
- Сборка тестового проекта. Компоновщик не должен жаловаться на пропущенные или двойные символы.