Diciamo che inizio a sviluppare un gioco di ruolo con personaggi che attaccano altri personaggi e quel genere di cose.
Applicando TDD, realizzo alcuni casi di test per testare la logica all'interno del Character.receiveAttack(Int)
metodo. Qualcosa come questo:
@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));
}
Supponiamo di avere 10 metodi di prova receiveAttack
. Ora aggiungo un metodo Character.attack(Character)
(che chiama receiveAttack
metodo) e dopo alcuni cicli TDD che lo testano, prendo una decisione: Character.receiveAttack(Int)
dovrebbe essere private
.
Cosa succede con i precedenti 10 casi di test? Devo eliminarli? Devo mantenere il metodo public
(non credo)?
Questa domanda non riguarda come testare metodi privati ma come gestirli dopo una riprogettazione quando si applica TDD
internal
o equivalente della tua lingua per impedirne comunque l'esposizione. In effetti la risposta di Kevin Cline è questo tipo di approccio.