tec*_*b12 3 java junit jodatime
我正在玩Joda Time进行JUnit测试,以便在我的代码中"绕过"超时窗口.我似乎并没有得到Joda Time如何工作 - 我的代码:
// TIMEOUT is "1000 * 90"
long Time = System.currentTimeMillis();
DateTimeUtils.setCurrentMillisFixed(Time + TIMEOUT + 1);
DateTimeUtils.setCurrentMillisSystem();
System.out.println((Time+TIMEOUT) < System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)
输出是假的,我本以为它是真的.那我哪里出错了?
DateTimeUtils.setCurrentMillisFixed() 不会改变结果 System.currentTimeMillis()
这个想法是你应该调用的所有代码,System.currentTimeMillis()而不是DateTimeUtils.currentTimeMillis()默认调用,System.currentTimeMillis()除非你告诉它使用固定的时间戳.
此外,大多数使用超时的代码将System.currentTimeMillis()直接调用,因此您无法使用Jodatime更改超时时间.
Jodatime方法的目的是能够更好地测试依赖于日期或时间的代码.例如,如果我的代码在工作时间或周末之后做了不同的事情,我可以让我的测试代码看起来就像我想要测试的那样(只要代码DateTimeUtils.currentTimeMillis()用来查看时间/日期是什么.)
还DateTimeUtils.setCurrentMillisSystem();更改DateTimeUtils.currentTimeMillis()方法以返回使用System.currentTimeMillis()而不是您设置固定时间的任何内容.因此,即使JodaTime表现得像你想象的那样,你也可以在测试断言之前重置时间
| 归档时间: |
|
| 查看次数: |
744 次 |
| 最近记录: |