单元测试 - 如何测试返回随机输出的函数?

Ext*_*kun 14 unit-testing

我有一个函数,它接受两个参数,并返回一个或另外50%的时间.

对此进行单元测试应确定可以返回两个参数.幸运的是,我不需要证明每个的概率是50%,但我需要证明两个参数都可以返回.

如何为此功能编写测试用例?

Joh*_*ohn 21

如果随机性基于它调用的随机数生成器,您可以装配一个stub random()函数,该函数返回各种结果以提供您的预期输出.

  • 您还可以使用模拟随机来测试极值,例如random()返回0.0或1.0. (2认同)

Jam*_*son 5

您可以执行以下两项操作之一:

  1. 制作一个存根 random() 生成器,在单元测试时可以返回一致的数字。
  2. 运行您的代码 N 次,其中 N 足够高,只要代码正常运行,您就可以获得一致的结果。

选项#1 几乎总是首选。通过包含随机数生成器,您不再测试代码的原子单元,并且通过将随机组件包含到单元测试中,您需要进行统计以验证代码是否正常工作。在合理数量的测试中,选项 #2 永远无法发现一些错误,这令人担忧。