Załóżmy, że zaczynam rozwijać grę RPG z postaciami atakującymi inne postacie i tym podobne rzeczy.
Stosując TDD, wykonuję kilka przypadków testowych w celu przetestowania logiki wewnątrz Character.receiveAttack(Int)metody. Coś takiego:
@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));
}
Powiedz, że mam 10 metod testowania receiveAttackmetod. Teraz dodaję metodę Character.attack(Character)(która wywołuje receiveAttackmetodę) i po przetestowaniu jej przez niektóre cykle TDD podejmuję decyzję: Character.receiveAttack(Int)powinno być private.
Co dzieje się z poprzednimi 10 testami? Czy powinienem je usunąć? Czy powinienem zachować metodę public(nie sądzę)?
To pytanie nie dotyczy tego, jak przetestować prywatne metody, ale jak sobie z nimi poradzić po przeprojektowaniu podczas stosowania TDD
internallub odpowiednik twojego języka, aby nadal nie była narażona. W rzeczywistości odpowiedź Kevina Cline'a jest tego rodzaju podejściem.