Допустим, я начинаю разрабатывать ролевую игру с персонажами, которые атакуют других персонажей и тому подобное.
Применяя TDD, я делаю несколько тестов для проверки логики внутри Character.receiveAttack(Int)
метода. Что-то вроде этого:
@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));
}
Скажем, у меня есть 10 методов тестирования receiveAttack
метода. Теперь я добавляю метод Character.attack(Character)
(который вызывает receiveAttack
метод), и после нескольких циклов тестирования TDD я принимаю решение: Character.receiveAttack(Int)
должно быть private
.
Что происходит с предыдущими 10 тестами? Должен ли я удалить их? Должен ли я сохранить метод public
(я так не думаю)?
Этот вопрос не о том, как тестировать частные методы, а о том, как обращаться с ними после перепроектирования при применении TDD
internal
или эквивалент вашего языка для предотвращения его раскрытия. На самом деле ответ Кевина Клайна - это такой подход.