В настоящее время мой проект состоит из различных конкретных классов. Теперь, когда я получаю модульное тестирование, похоже, что я должен создать интерфейс для каждого класса (эффективно удваивая количество классов в моем проекте)? Я использую Google Mock как насмешливую структуру. См. Google Mock CookBook на интерфейсах. Хотя до того, как я мог бы иметь только классы Car
и Engine
, теперь у меня были бы абстрактные классы (ака С++-интерфейсы) Car
и Engine
, а затем классы реализации CarImplementation
и EngineImpl
или что-то еще. Это позволило бы мне отключить зависимость Car
от Engine
.
Есть две линии мысли, которые я нашел, исследуя это:
-
Используйте только интерфейсы, если у вас может быть больше одного реализации данной абстракции и/или для использования в публичных API, так что иначе не создавайте интерфейсы без необходимости.
-
Единичные тесты шлейфов /mocks часто это "другая реализация", и поэтому да, вы должны создать intefaces.
При тестировании модулей, должен ли я создавать интерфейс для каждого класса в моем проекте? (Я склоняюсь к созданию интерфейсов для простоты тестирования)