An overview of design practices for building modules/applications to best facilitate unit testing.
The primary goal of the unit test is to be able to exercise as much functionality as possible within a certain module (unit). The best way to achieve this is to completely separate functionality into units (or modules) with any external dependencies being injected at initialization.