假设我开始开发角色扮演游戏,角色扮演者会攻击其他角色以及类似的东西。
应用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
method),并在经过一些TDD循环测试之后,我做出一个决定:Character.receiveAttack(Int)
应该是private
。
前10个测试用例会发生什么?我应该删除它们吗?我应该保留方法public
(我不这样认为)吗?
这个问题不是关于如何测试私有方法的,而是关于在应用TDD时重新设计后如何处理它们的问题。
internal
或与您的语言等效,以防止其被暴露。实际上,凯文·克莱恩(Kevin Cline)的答案就是这种方法。