Here’s an excellent post by Steve Sanderson on when and how you should choose to write unit tests.
I’m not sure I would agree with his assessment that 100% code coverage is an aim for only a minority of developers doing TDD (that’s not exactly what he said, but it’s my blog and I can twist words if I want to, twist words if I want to). I think TDD is bad in large part because it does focus too closely at the class level and pushes for unit testing everything (this is why Specification-style testing is better).
But regardless of that, it’s a good read.