The Unit Test Paradox

The unit test paradox is the paradox that low level unit testing “drives” good design by itself being a form of bad design.

Low level unit tests tightly couple to code

All tests couple to something - end to end tests couple to the body of the architecture as a whole. Lower level integration tests couple to lower level implementation details.

The lower the level of the testing, the tighter it couples to the implementation.

Coupling == pain

If you have worked on tightly coupled software or “spaghetti code” you will understand the pain of trying to understand