As we have seen throughout this book, unit tests serve a number of different purposes:
Serve as a test suite: This is the most obvious goal of unit tests. A comprehensive test suite reduces the number of bugs that can escape into production.
Serve as documentation: When we are trying to understand what a class or method is trying to do, it is useful to take a look at the test suite. A well-written test suite will illustrate how the piece of code is supposed to behave.
Serve as a safety net: This frees us from pressure when we refactor or clean up the code.
Illustrate the design: Using mocks, we can depict the interactions between different classes or modules.
The goal of a well-written suite of unit tests is to enable these purposes as well as possible.
For example, if we want to understand what a method does, then we need to work out the following:
Can we locate its unit test suite easily?
Once located, is it easy to understand the tests and what they are testing for...