The Detroit and London schools define “unit test” differently, driving fundamentally different strategies. Detroit treats a unit as a unit of behavior: one or more classes collaborating, using real collaborators wherever practical. London treats a unit as a single class, replacing all collaborators with mocks and verifying interaction patterns.
Detroit produces more resilient tests that survive refactoring because they test outcomes. London provides faster fault localization but creates brittle tests that break when you reorganize code without changing behavior. For most codebases, refactoring resilience wins. You refactor far more often than you need pinpoint localization.