Check out Building better Unit Tests on InfoQ - it's Mom and Apple Pie but it never hurts to have it repeated. On a somewhat related topic, new bits in JUnit version 4.7. Also, a post I missed when it appeared a couple of weeks ago from Fowler that is, as usual for him, thought provoking.
And wise words from Uncle Bob: All systems are collections of historical compromises. I'd add that the longer the compromises have been around, the more likely they've given birth to descendant compromises (such a family tree can span several generations in the space of a few short years). Often this family amasses a fortune in technical debt (rare is the system that has a family filled with technical trust fund babies - if you find one, latch onto it and don't let it go).