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