考虑一种随机调整数组元素的方法。您将如何编写一个简单而健壮的单元测试以确保其正常工作?
我提出了两个想法,两个都有明显的缺陷:
- 随机排列数组,然后确保其顺序与以前不同。这听起来不错,但是如果随机播放以相同顺序随机播放,则失败。(不可能,但可能。)
- 用恒定的种子对数组进行混洗,并根据预定的输出进行检查。这依赖于随机函数始终在给定相同种子的情况下始终返回相同的值。但是,有时这是一个无效的假设。
考虑第二个函数,该函数模拟掷骰子并返回随机数。您将如何测试此功能?您将如何测试该功能...
- 永远不会返回给定范围之外的数字?
- 返回有效分布中的数字?(一个骰子统一,大量骰子正常。)
我正在寻找答案,以提供不仅可以测试这些示例,而且可以测试常规代码的随机元素。这里的单元测试甚至是正确的解决方案吗?如果没有,那是什么样的测试?
只是为了让大家放心,我没有编写自己的随机数生成器。