В целом TDD хороший инструмент. Но со своими ограничениями.
Если есть монолитное сильносвязанное приложение, то без него на мой взгляд не обойтись.
Например, AX POS. Многие участки, изменение которых приводит к нестабильности приложения просто закрыты, но иногда нужно внести правки и приложение моментально реагирует на это отказом совершенно в другом.
Относительно TDD в сложных модульных системах вопрос открытый и дискуссии идут по сей день. Например,
Тут.