Quelques màj sur 3T :
D'abord, je reviens sur l'obligation de créer des interfaces. Je pense que c'est indispensable si on pense travailler avec plusieurs implémentations. Dans le cas contraire, on peut effectivement se contenter d'une classe simple.
Je réaffirme que je suis absolument contre le fait de dire qu'un test qui ne compile pas correspond à l'étape Rouge du TDD. Un test qui ne compile pas, c'est juste du code sans valeur. Ça ne sert à rien !... Je pense que le minimum d'un programme, c'est au moins de compiler (ie. ne pas avoir de croix rouges dans le code). Par contre, ça me va très bien si ça retourne une valeur fausse, une constante ou une UOE.
Et j'insiste une fois de plus sur le fait d'écrire directement tous les tests qui sont connus à l'avance (ie. recopiés des specs) au lieux d'alterner entre tests et code, par itérations.
Et enfin, même si ce n'est qu'une proposition, je suis convaincu que c'est mieux lorsque ce sont des personnes différentes qui écrivent les tests et les codes.