Tests that Don't Suck
tl;dr This is a long post. I think its valuable reading, but I can also sum up my recommendations as:
Build good but narrow APIs that are the public contracts for your code. Focus your tests on these. Don’t focus on testing at the level of methods, classes, etc, except insofar as these represent the public APIs, with the exception of complex algorithms that may need particular attention.
Introduction This post is based on a talk I gave to my team in an effort to establish a common approach to thinking about automated tests: specifically those we would have labeled as ‘unit tests’.