Diciamo che inizio a sviluppare un gioco di ruolo con personaggi che attaccano altri personaggi e quel tipo di cose.
Applicando TDD, faccio alcuni test case per testare la logica all'interno del metodo Character.receiveAttack(Int)
. Qualcosa del genere:
@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 che abbia 10 metodi per testare il metodo receiveAttack
. Ora aggiungo un metodo Character.attack(Character)
(che chiama il metodo receiveAttack
), e dopo alcuni cicli TDD che lo testano, prendo una decisione: Character.receiveAttack(Int)
dovrebbe essere private
.
Cosa succede con i 10 casi di test precedenti? Dovrei eliminarli? Devo mantenere il metodo public
(non penso)?
Questa domanda non riguarda come testare i metodi privati ma come affrontarli dopo una riprogettazione quando si applica TDD