Я научился выполнять тест-ориентированную разработку (TDD), внедрение зависимостей (DI) и инверсию управления (IoC) одновременно. Когда я пишу код с использованием TDD, я всегда использую DI в конструкторах моего класса. Мне интересно, если это из-за того, как я научился делать TDD, или это естественный побочный эффект TDD.
Поэтому мой вопрос таков: неизбежно ли следование принципам TDD и написание модульных тестов, которые не зависят от внешних служб, к DI?