In my experience, TDD is a waste of time.
a) It adds more code that my developers do not know, i.e. more training time and more code.
b) It does not work as well for database. Sometimes we should add "mockup" stuff and it is anything but funny.
c) It does not work at all for the presentation layer.
d) TDD works so well for business logic. However, business logic usually is a tiny layer between the presentation and the persistence.