Простота тестирования заключается в том, что вы можете заменить столько зависимостей, которые ваш метод имеет с помощью тестового кода (издевательства, подделки и т. Д.). Рекомендуемый в настоящее время способ выполнить это путем инверсии зависимостей, а также Голливудского принципа: Не звоните нам, мы позвоним вам. Другими словами, ваш код должен «просить вещи, не ищите вещей».
Как только вы начнете думать таким образом, вы обнаружите, что код может легко иметь зависимости от многих вещей. У вас есть не только зависимости от других объектов, но и базы данных, файлы, переменные среды, API-интерфейсы ОС, глобалы, синглтоны и т. Д. Соблюдая хорошую архитектуру, вы минимизируете большинство этих зависимостей, предоставляя их через соответствующие слои. Поэтому, когда приходит время тестировать, вам не нужна рабочая база данных, полная тестовых данных, вы можете просто заменить объект данных макетным объектом данных.
Это также означает, что вы должны тщательно разбирать свою конструкцию объекта со своего объекта. «Новое» утверждение, размещенное в конструкторе, создает зависимость, которую очень сложно заменить тестовым макетом. Лучше передать эти зависимости через аргументы конструктора.
Кроме того, соблюдайте Закон Деметры. Не копайте более одного слоя глубоко в объект, иначе вы создаете скрытые зависимости. Вызов Flintstones.Wilma.addChild (гальки); означает, что вы считали зависимость от «Флинстоунов», на самом деле является зависимостью от «Флинстоунов» и «Вильмы».
Сначала напишите тесты и введите код. Если вы это сделаете, вы обнаружите, что архитектура, естественно, тяготеет к чему-то проверяемому. –