One frequent hole in Test Driven Development (or any other comprehensive attempt to test) in Java web applications is the presentation layer. Especially when using an MVC pattern to separate the work from the display, the trend is to do that testing more or less "by hand." After the rest has been written and tested, the application is packaged and deployed, and testing is done by skipping though websites, filling boxes and clicking buttons. There are a number of scripting and other automated test tools that will "drive" a browser or even emulate one, reducing or removing the human element from that testing, but that package and deploy step still has to be done.
Read more »