涉及随机数的算法单元测试

4
我正在编写一些关于分形和随机地形生成的代码。目前,我使用的是钻石-方块算法。对于那些不了解的人来说,它基本上是每一步获得四个值的平均值,并添加一个随机数。我该如何测试结果?我应该使用已知的种子并手动计算平均值加上随机值,还是在代码中计算结果,使用随机数?或者还有其他方法吗?此外,对于反向过程(即TDD,在编写代码之前编写测试)的一些想法将不胜感激。
2个回答

8
您可以使用一个mocking框架来模拟您的随机数生成。这样,您可以从结果中移除随机性,并能够使用一组静态预定义的测试用例测试您的代码。
在所有情况下,您都不是在测试随机数生成,而是在测试您所做的计算。如果您有一个错误,您真正需要知道使用的随机数字来复现该错误。

1

只需选择一个种子和一些迭代次数(即在实际使用 PRNG 的值之前调用该 PRNG 的次数),并在主代码和单元测试中使用相同的数据(种子和迭代)。这些数据可以在配置文件中,主代码和单元测试都可以访问。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接