13

確率過程を単体テストする適切な方法はありますか? たとえば、特定のシステム モデルのシミュレーターをコーディングしたとします。シミュレーターは rng のシードに基づいてランダムに動作するため、システムの状態を予測することはできず、可能であれば、すべてのテストで、クラスのメソッドをテストする前にシステムを特定の状態にする必要があります。これを行うより良い方法はありますか?

4

5 に答える 5

7

明らかな 2 つの選択肢は、ランダム性を取り除く (つまり、ユニット テストに固定の既知のシードを使用して、そこから続行する) か、統計的にテストする (つまり、同じテスト ケースを 100 万回実行し、平均値がおよび分散 (など) は期待に一致します)。後者はおそらくシステムのより良いテストですが、いくつかの誤報に対処する必要があります.

于 2010-07-25T10:46:15.233 に答える
4

これは、このトピックをカバーする素敵なブログ投稿です。基本的に、制御されたランダム性をテスト対象のオブジェクトに注入する必要があります。

于 2010-07-25T10:07:44.893 に答える
1

Theoriesおそらく、JUnitを使用してそれを解決できます。

http://blogs.oracle.com/jacobc/entry/junit_theories

于 2010-07-25T10:11:23.623 に答える