Cela pourrait être une question assez stupide que je suis à mes premiers essais de TDD. J'ai adoré le sentiment de confiance qu'il apporte et généralement une meilleure structure de mon code mais quand j'ai commencé à l'appliquer à quelque chose de plus grand que des exemples de jouets d'une classe, j'ai rencontré des difficultés.
Supposons que vous écrivez une sorte de bibliothèque. Vous savez ce qu'il doit faire, vous connaissez une manière générale de le mettre en œuvre (en termes d'architecture), mais vous continuez à «découvrir» que vous devez apporter des modifications à votre API publique pendant que vous codez. Peut-être devez-vous transformer cette méthode privée en modèle de stratégie (et devez maintenant passer une stratégie simulée dans vos tests), peut-être avez-vous égaré une responsabilité ici et là et divisé une classe existante.
Lorsque vous améliorez le code existant, TDD semble un très bon choix, mais lorsque vous écrivez tout à partir de zéro, l'API pour laquelle vous écrivez des tests est un peu "floue" à moins que vous ne fassiez un gros design à l'avance. Que faites-vous lorsque vous avez déjà 30 tests sur la méthode dont la signature (et pour cette partie, le comportement) a changé? C'est beaucoup de tests à changer une fois qu'ils s'additionnent.