gpt4 book ai didi

perl - 编写涉及随机性的 Perl 测试时,最佳实践是什么?

转载 作者:行者123 更新时间:2023-11-28 19:47:32 25 4
gpt4 key购买 nike

在对我的模块进行一些更新时 List::Gen ,我决定添加一个 ->pick(num) 方法,它将从其源返回一个 num 大小的随机元素列表。为了对此进行测试,我使用 srand 为随机数生成器设置种子,并进行了以下形式的多项测试:

srand 1234;
is $src->pick(5)->str, '3 6 1 7 9';

这一切在我当时使用的 Windows 机器上运行良好。然而,当我将项目转移到 Mac 工作站时,所有的随机性测试都失败了,因为尽管有相同的随机种子,rand 却产生了不同的结果。我从 rand() 的不同底层 C 实现中收集到这一点。

那么问题来了,测试这些功能的最佳跨平台方式是什么?我应该用自己的函数重载 rand 函数吗?我是否应该为使用 rand 的函数构建 Hook 以启用产生可预测输出的“测试”模式?还有其他方法吗?

我更喜欢包含核心 Perl 技术的答案,因为我试图使模块的依赖树保持较小。

Test::RandomTest::MockRandom似乎是 CPAN 的建议,有没有人有使用这些模块的经验?

最佳答案

我一个都没用过。

看起来 Test::Random 对您来说是更好的选择,因为您显然只是在测试中使用随机性,而不是在发布的代码中。使用起来应该简单得多。

Test::MockRandom 模块强制 rand() 函数返回确定性序列。

关于perl - 编写涉及随机性的 Perl 测试时,最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com