我在两个不同平台(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 初始化产生的结果与在运行时设置种子所获得的结果不同?
提前感谢您的任何反馈。
啊