我今天一直在用python编写一个简单的connect-four游戏。我打算对比赛进行全面的测试。你知道吗
除了主游戏循环外,我还为我的所有方法编写了测试。我不确定如何为主游戏循环编写有效的测试。你知道吗
在以下函数中:
你知道吗自行移动获取玩家的移动并将其放入游戏板;并且
is\u game \u complete()根据游戏是否完成返回布尔值。
以上两项都有有效的检验。你知道吗
我不确定如何写一个有用的测试下面。测试合适吗?你知道吗
def game_loop(self):
while True:
for active_player in self.players:
self.move(active_player)
if self.game_checker.is_game_complete():
return active_player
我希望有一种简洁的方法来编写测试,或者测试在这里不太可能有用。你知道吗
非常感谢您的回复。你知道吗
将代码分解为可测试的部分。你知道吗
首先,生成可能无限多个游戏状态的生成器,但只能按需生成:
这需要
self.move
返回被评估的内容,而不是简单地执行评估本身。这个东西也应该保留活跃玩家作为一个属性供以后使用。你知道吗接下来,编写一个函数消耗游戏状态流:
现在你有两个可测试的部分。由
game_gen
产生的项目可以一次测试一个,而无需等待整个游戏在循环终止之前进行。game_loop
不再隐式生成游戏;它获取由game_gen
生成的一系列移动,或者您自己创建的人工测试数据,以验证循环是否在必要时终止(或不终止)。你知道吗你不应该用单元测试来测试游戏循环(太多的依赖项是不能伪造的)。在这里没有用。如果你有
self.move(active_player)
和is_game_complete()
的测试,那就足够了。你不能有100%的测试覆盖率,尤其是在游戏开发中。你知道吗相关问题 更多 >
编程相关推荐