In our view, the best definition for "unit" in Unit Testing is one that satisfies the following: big enough to include public methods or APIs but small enough to be reasonably isolated from the remainder of the code base. You do not want to test the whole system as one black box if it can be decomposed into smaller, more manageable, components. It's just more convenient.