Digamos que eu comece a desenvolver um RPG com personagens que atacam outros personagens e esse tipo de coisa.
Aplicando o TDD, faço alguns casos de teste para testar a lógica dentro do Character.receiveAttack(Int)
método. Algo assim:
@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 eu tenha 10 métodos, receiveAttack
método de teste . Agora, adiciono um método Character.attack(Character)
(que chama receiveAttack
método) e, após alguns ciclos de TDD testá-lo, tomo uma decisão: Character.receiveAttack(Int)
deveria private
.
O que acontece com os 10 casos de teste anteriores? Devo excluí-los? Devo manter o método public
(acho que não)?
Esta questão não é sobre como testar métodos privados, mas como lidar com eles após um novo design ao aplicar o TDD
internal
ou equivalente ao seu idioma para impedir que seja exposta. De fato, a resposta de Kevin Cline é esse tipo de abordagem.