Bien que l'un des principaux avantages du TDD soit de garantir l'intégrité de votre code en vérifiant qu'il fonctionne, ce n'est pas le seul. L'autre avantage majeur du TDD, s'il est fait correctement, est que vous isolez une partie de la fonctionnalité et développez contre elle. Lorsque vous écrivez vos tests avant votre code, vous vous obligez à réfléchir à ce que votre méthode doit faire exactement en fonction du résultat attendu.
Lorsque vous suivez cette approche depuis le début, vous écrivez vos tests pour votre fondation et, à mesure que vous progressez dans l'application, vous voyez des points sur lesquels vous pouvez réfracter et affiner le code. Lorsque vous appliquez ces changements, le test lui-même joue son rôle vital et vous informe si vous avez affecté autre chose dans l'application.
L'utilisation de tests pour concevoir des logiciels exige un changement majeur dans votre façon de penser. Même aujourd'hui, lorsque j'échoue à faire du développement basé sur les tests, j'ai du mal à renvoyer et à écrire des tests. Cela devient une tâche fastidieuse que je préfère ne pas faire. Cependant, lorsque je les écris en premier, cela devient un processus critique de conception. J'ai constaté que c'est beaucoup plus difficile à faire lorsque j'entre dans un projet qui est en cours.
Edit : Il n'y a rien de tel que la satisfaction que vous ressentez lorsque vous écrivez une méthode qui ne cesse d'envoyer un signal rouge et que vous avez un moment "ah-ha" et que vous voyez cette bulle devenir verte, ou le sentiment de soulagement que vous ressentez lorsque vous apportez un petit changement qui, selon vous, n'aura pas d'incidence sur le reste de votre application et que les feux rouges s'éteignent.