Katakanlah saya mulai mengembangkan permainan peran dengan karakter yang menyerang karakter lain dan hal-hal semacam itu.
Menerapkan TDD, saya membuat beberapa test case untuk menguji logika di dalam Character.receiveAttack(Int)
metode. Sesuatu seperti ini:
@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));
}
Katakanlah saya punya 10 metode metode pengujian receiveAttack
. Sekarang, saya menambahkan metode Character.attack(Character)
(yang memanggil receiveAttack
metode), dan setelah beberapa siklus TDD mengujinya, saya membuat keputusan: Character.receiveAttack(Int)
seharusnya private
.
Apa yang terjadi dengan 10 kasus uji sebelumnya? Haruskah saya menghapusnya? Haruskah saya menjaga metode public
(saya tidak berpikir begitu)?
Pertanyaan ini bukan tentang bagaimana menguji metode pribadi tetapi bagaimana menghadapinya setelah desain ulang ketika menerapkan TDD
internal
atau setara dengan bahasa Anda untuk tetap mencegahnya diekspos. Sebenarnya jawaban Kevin Cline adalah pendekatan semacam ini.