2 つの異なるプラットフォーム (Win7 と Ubuntu PP) の Spring3 アプリで JUnit テストを実行しています。テスト/再現性の目的で、アプリケーションコンテキストで乱数発生器のシードを設定しました
<bean class="org.apache.commons.math3.random.MersenneTwister">
<property name="seed" value="1111111" />
</bean>
さて今回のテスト
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration( { Config.APP_CONFIG_PATH })
public class StatTestAtomicInitOut {
@Autowired
RandomGenerator rg;
@Test
public void testRandomGenerator() {
Assert.assertEquals(9183, rg.nextInt(10000));
}
}
Windows7 では一貫して成功しますが、Ubuntu PP では一貫して失敗します (java.lang.AssertionError: expected:<9183> but was:<9561>)。
この他のテスト
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration( { Config.APP_CONFIG_PATH })
public class StatTestAtomicInitIn {
@Autowired
RandomGenerator rg;
@Test
public void testRandomGenerator() {
rg.setSeed(new Long(1111111));
Assert.assertEquals(9183, rg.nextInt(10000));
}
}
Windows7 と Ubuntu PP の両方で一貫してパスします。
Ubuntu で (Win7 ではなく) ランダム ジェネレーターの Spring 初期化を実行すると、実行時にシードを設定して取得した結果とは異なる結果が得られるのはなぜですか?
フィードバックをお寄せいただきありがとうございます。
ああ