Utile modèles de conception pour les tests unitaires/TDD?

Lecture cette question m'a aidé à consolider certains des problèmes que j'ai toujours eu avec les tests unitaires, TDD, et al.

Depuis de venir à travers le TDD approche du développement, je savais que c'était le bon chemin à suivre. La lecture des différents tutoriels m'ont aidé à comprendre comment faire un début, mais ils ont toujours été très simpliste, pas vraiment quelque chose que l'on peut appliquer à un projet actif. Le meilleur que j'ai réussi est l'écriture de tests autour de petites parties de mon code - des choses comme les bibliothèques, qui sont utilisés par l'application principale, mais ne sont pas intégrés, en quelque sorte. Tout cela a été utile, il équivaut à environ 5% de la base de code. Il y a très peu là-bas sur la façon de passer à l'étape suivante, pour m'aider à faire quelques tests dans l'application principale.

Des commentaires tels que "la Plupart des code sans tests unitaires est construit en dur dépendances (c'est à dire la nouvelle en a partout) ou des méthodes statiques." et "...il n'est pas rare d'avoir un haut niveau de couplage entre les classes, dur-à-configurer les objets à l'intérieur de votre classe [...] et ainsi de suite." m'ont fait réaliser que la prochaine étape est de comprendre comment de-couple de code pour rendre testable.

Que dois-je regarder pour m'aider à faire cela? Est-il un ensemble de modèles de conception que j'ai besoin de comprendre et de commencer à mettre en œuvre qui permettra de tester plus facilement?