A unit test automatically verifies the behavior of a small unit of code (method or class) in an isolated, fast, and repeatable way. It documents the expected behavior and protects against regressions. A good test is independent of the others, deterministic, and touches neither the network nor a database.