Заменить класс в Dll для модульного тестирования - PullRequest
0 голосов
/ 14 января 2019

Моя цель - проверить DLL с помощью модульного тестирования. У меня уже есть проект, который загружает DLL и проверяет ее с помощью тестов Google. Теперь я хочу заменить один из классов в DLL на макет и повторить тесты.

Возможно ли? Как я могу это сделать?

1 Ответ

0 голосов
/ 21 января 2019

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

Итак, что вам нужно сделать, это:

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