Digamos que comienzo a desarrollar un juego de roles con personajes que atacan a otros personajes y ese tipo de cosas.
Aplicando TDD, hago algunos casos de prueba para probar la lógica dentro del Character.receiveAttack(Int)
método. Algo como esto:
@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));
}
Digamos que tengo 10 métodos de prueba receiveAttack
. Ahora, agrego un método Character.attack(Character)
(que llama receiveAttack
método), y después de algunos ciclos de TDD probándolo, tomo una decisión: Character.receiveAttack(Int)
debería ser private
.
¿Qué sucede con los 10 casos de prueba anteriores? ¿Debo eliminarlos? ¿Debo mantener el método public
(no lo creo)?
Esta pregunta no trata sobre cómo probar métodos privados, sino cómo tratarlos después de un rediseño al aplicar TDD
internal
o el equivalente de su idioma para evitar que quede expuesta. De hecho, la respuesta de Kevin Cline es este tipo de enfoque.