Giả sử tôi bắt đầu phát triển một trò chơi nhập vai với các nhân vật tấn công các nhân vật khác và những thứ đó.
Áp dụng TDD, tôi thực hiện một số trường hợp thử nghiệm để kiểm tra logic bên trong Character.receiveAttack(Int)
phương thức. Một cái gì đó như thế này:
@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));
}
Nói rằng tôi có 10 phương pháp thử nghiệm receiveAttack
phương pháp. Bây giờ, tôi thêm một phương thức Character.attack(Character)
(gọi receiveAttack
phương thức đó) và sau một số chu kỳ TDD kiểm tra nó, tôi đưa ra quyết định: Character.receiveAttack(Int)
nên private
.
Điều gì xảy ra với 10 trường hợp thử nghiệm trước đó? Tôi có nên xóa chúng? Tôi có nên giữ phương pháp public
(tôi không nghĩ vậy)?
Câu hỏi này không phải là về cách kiểm tra các phương thức riêng tư mà là cách xử lý chúng sau khi thiết kế lại khi áp dụng TDD
internal
hoặc ngôn ngữ của bạn tương đương với việc vẫn ngăn chặn nó bị lộ. Trong thực tế, câu trả lời của Kevin Cline là cách tiếp cận này.