他のキャラクターやそのようなものを攻撃するキャラクターでロールゲームの開発を始めたとしましょう。
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));
}
メソッドをテストreceiveAttack
する10のメソッドがあるとします。次に、メソッドCharacter.attack(Character)
(メソッドを呼び出すreceiveAttack
)を追加し、TDDサイクルでテストした後、決定するCharacter.receiveAttack(Int)
必要がありますprivate
。
以前の10個のテストケースはどうなりますか?それらを削除する必要がありますか?メソッドを保持する必要public
があります(そうは思わない)。
この質問は、プライベートメソッドをテストする方法ではなく、TDDを適用する際の再設計後にそれらを処理する方法に関するものです。
internal
またはそれと同等の言語としてマークして、公開されないようにすることができます。実際、Kevin Clineの答えはこの種のアプローチです。