Модульное тестирование предназначено для минимизации тестируемого элемента -> маршрута тестовых данных, чтобы сократить время поиска в случае ошибки - ошибка либо в тестируемой вами подпрограмме, либо в тестовом модуле и ничего более (ну, может быть, ОС или компилятор ... но это очень редко).
Теперь представьте, что вы создали модуль доступа к базе данных. Модуль, кажется, работает нормально. Затем вы делаете читателя конфигурации, который читает из базы данных. Вместо тестового модульного модуля модуля доступа к базе данных вы используете свой реальный модуль базы данных поверх фиктивных данных конфигурации в тестовом модуле базы данных. Кажется, все еще работает нормально. Теперь вы добавляете слой графического интерфейса, который использует объект конфигурации, возвращаемый модулем чтения конфигурации. Вместо того, чтобы издеваться над «вареными» данными конфигурации, вы используете реальный модуль, который, очевидно, работает.
И теперь ваш графический интерфейс перестает работать на определенное значение. Где ошибка? В графическом интерфейсе, в программе чтения конфигурации, в средствах доступа к базе данных или в значениях в фиктивной базе данных?
Другими словами, вы не просто тестируете код, который пишете, вы также тестируете реальную систему хранилища, и если обнаружена ошибка, у вас есть дополнительный слой для анализа.