Disons que je commence à développer un jeu de rôle avec des personnages qui attaquent d'autres personnages et ce genre de choses.
En appliquant TDD, je fais quelques cas de test pour tester la logique à l'intérieur de la Character.receiveAttack(Int)
méthode. Quelque chose comme ça:
@Test
fun healthIsReducedWhenCharacterIsAttacked() {
val c = Character(100) //arg is the health
c.receiveAttack(50) //arg is the suffered attack damage
assertThat(c.health, is(50));
}
Disons que j'ai 10 méthodes de test receiveAttack
. Maintenant, j'ajoute une méthode Character.attack(Character)
(qui appelle receiveAttack
méthode), et après quelques cycles TDD la testant, je prends une décision: Character.receiveAttack(Int)
devrait l'être private
.
Que se passe-t-il avec les 10 cas de test précédents? Dois-je les supprimer? Dois-je garder la méthode public
(je ne pense pas)?
Cette question n'est pas de savoir comment tester des méthodes privées, mais comment les gérer après une nouvelle conception lors de l'application de TDD
internal
ou l'équivalent de votre langue pour éviter qu'elle ne soit exposée. En fait, la réponse de Kevin Cline est ce genre d'approche.