It's been a while, but I have a new favorite book -
If your company or team is trying or going to try to start writing unit tests or work in a test driven manner, no matter what language you use, this is one of the best books you can get to help you get through the always-hard "rough patch" that team go through as they learn new tricks. Especially if you have a bunch of untested code you're going to have to deal with as you progress into a new, more agile future. It's not the only book you need to get, but it ranks right up there with TDD with .NET if you're starting out with little testing experience.
One of the biggest hurdles in becoming agile is writing unit tests for new code that has to work with old code, or testing old code when it needs changing. This books details in great length practically every trick you could think of to make this testing possible, with great examples in Java and C++.
When I first got to read it I realized that, just like when reading the classic design patterns book, I've been implementing and recommending some of this stuff (not all) for a while, but always thinking that there has to be some formal "pattern" at work here that is shared among developers.
This book is the closest it gets to being a "legacy test patterns" book that I've seen, with real world advice and problem solving skills that are handed to you on a platter. You can definitely see that this guy had worked long and hard to achieve this kind of knowledge and as far as I'm concerned this book is worth more than its weight in gold. Much more.