Чтобы иметь возможность unit test моего кода на С++, я обычно передаю конструктор класса под одним или несколькими объектами, которые могут быть либо "производственным кодом", либо фальшивыми/макетными объектами (позвольте назвать эти объекты инъекции). Я сделал это либо
- Создание интерфейса, который наследует класс "производственный код" и класс fake/mock.
- Выполнение класса под классом шаблона, который принимает типы объектов инъекции в качестве параметров шаблона, и экземпляры объектов инъекции в качестве параметров для конструктора.
Некоторые случайные мысли:
- До тех пор, пока у нас нет понятий (С++ 0x), только документация и именование параметров подскажут, что обеспечить тестируемый класс (при использовании шаблонов).
- Не всегда возможно создавать интерфейсы для устаревшего кода
- Интерфейс в основном создан только для того, чтобы иметь возможность делать инъекции зависимостей
- Точно так же: шаблонный тест класса выполняется только для включения инъекции зависимостей
Каковы ваши мысли? Существуют ли другие решения этой проблемы?