我正在开发一个Tic Tac Toe,我有一个#negamax
方法可以返回计算机移动到的最佳位置,还有#winner
方法返回1
(计算机)获胜)或-1
(用户获胜)。如何测试#negamax
以确保其实施正确并且用户从不获胜?
我在一些地方有一些测试用例,以测试它返回最佳位置,但确实如此,但它并未涵盖所有可能的情况。现在,这就是我所拥有的(除了最佳选择的测试用例):
it 'never allows user to win' do
until game_over?
unless is_ai?
pos = empty_positions.sample
move(pos, user)
else
pos = negamax(0, 1, -100, 100)
move(pos, computer)
end
end
if game.won?
expect(winner).to eq(1)
else
expect(winner).to be_nil
end
end
仅仅“希望”测试永远不会失败似乎没有效果。什么是更好的方法来实现它?
答案 0 :(得分:0)
不用担心,这是正常的,几乎不可能模拟应用程序的所有使用方式。测试一些东西会导致结果大幅增加。测试“一切”是浪费时间。那是因为“一切”并不重要。只有某些事情很重要。正确的事情很重要。但它并未涵盖所有可能的情况。