を呼び出す Java コードでいくつかの junit テストを作成する必要がありますMath.random()
。繰り返し可能な結果を生成するために独自の Random オブジェクトをインスタンス化する場合、シードを設定できることはわかっています。これも行う方法はありMath.random()
ますか?
15245 次
3 に答える
12
このメソッドMath.random()
は、プライベートな静的フィールドを使用します。
private static Random randomNumberGenerator;
本当にこれを に設定する必要がある場合new Random(CONSTANT_SEED)
(たとえば、制御できない JUNit テスト コードが必要な場合) は、リフレクションを使用して設定できます。
于 2010-05-14T19:24:35.840 に答える
9
自分のインスタンスを作成Random
して、代わりにそれを使用するのはどうですか?Math.random()
作成して使用するので、シードをいじることはできないと思います。ただし、を作成しRandom
て直接使用する場合は、作成時にそのシードを設定したり、後で呼び出すことができますsetSeed()
。
于 2010-05-14T18:48:49.660 に答える
3
Random のインスタンスでシードを設定するか、メソッドを拡張して必要な値を返すだけです
Field field = Math.class.getDeclaredField("randomNumberGenerator");
field.setAccessible(true);
field.set(null, new Random() {
@Override
public double nextDouble() {
return 1;
}
});
于 2013-02-19T10:10:35.203 に答える