モジュールList::Genの更新に取り組んでいるときに、メソッドを追加することにしました。このメソッドは、ソースからランダムな要素->pick(num)のサイズのリストを返します。numこれをテストするためにsrand、乱数ジェネレーターをシードし、次の形式でいくつかのテストを行いました。
srand 1234;
is $src->pick(5)->str, '3 6 1 7 9';
そして、これはすべて、当時私が使用していた Windows マシンでうまく機能しました。しかし、プロジェクトを Mac ワークステーションに移したところ、すべてのランダム性テストが失敗しました。これは、同じランダム シードを使用しているにもかかわらず、rand異なる結果が生成されたためです。これは、rand().
問題は、これらの機能をテストするための最適なクロス プラットフォームの方法は何かということです。rand関数を自分の関数でオーバーロードする必要がありますか? rand予測可能な出力を生成する「テスト」モードを有効にするために使用する関数へのフックを組み込む必要がありますか? 他の方法はありますか?
モジュールの依存関係ツリーを小さく保とうとしているので、コア Perl テクニックを含む回答を希望します。
Test::RandomとTest::MockRandomは CPAN の提案のようですが、これらのモジュールを使用した経験のある人はいますか?