One of the main failings of TDD is that developers think they need to know all of the tests up front.