A design remedy that prevents bugs is always preferable to a test method that discovers them.
Extra features were once considered desirable. We now recognize that 'free' features are rarely free. Any increase in generality that does not contribute to reliability, modularity, maintainability, and robustness should be suspected.
If you can't test it, don't build it. If you don't test it, rip it out.
Bugs lurk in corners and congregate at boundaries.
In programming, it’s often the buts in the specification that kill you.
A good threat is worth a thousand tests.