Сперва нужно отделить мух от котлет:
- Модульное тестирование решает задачу проверки качества кода на уровне разработчика - на выходе имеем код, который можно мерджить с основной веткой, тестировать руками и не бояться за зря потраченное время.
- TDD - как некоторая экстремальная практика, позволяющая создавать тестируемый код, лучше структурированный код и обеспечивать фактически 100% покрытие тестами.
Очевидно, одно другое дополняет. Например, тесты на проверку граничных значений, на вариативность данных, на интеграцию с источниками данных (интеграция с БД, интеграция через API и т.п.), отношения к TDD не имееют, но крайне важны.
Известно, что разработка через тестирование обычно занимает раза в два больше времени. С другой стороны, попробуйте решить сколько процентов покрытия тестами вам достаточно для производства качественного результата?