EDIT: What I should really say is that it isnt' just Designing for Testability, it's Designing with Testability From a question on my Passive View blog post : "should we design for testability, or should we try and test what's designed (perhaps designed badly, so we refactor later)?"...