您可以使用当前日期生成预期结果。
或者您编写系统以使用您在测试时提供的日期/时间(而不是时钟),这样,时间始终是测试所期望的。
我用类似的东西
interface TimeSource { long currentTimeMS(); // actually I have currentTimeNS void currentTimeMS(long currentTimeMS);}enum VanillaTimeSource implements TimeSource { INSTANCE; @Override public long currentTimeMS() { return System.currentTimeMillis(); } @Override public void currentTimeMS(long currentTimeMS) { // ignored }}class FixedTimeSource implements TimeSource { private long currentTimeMS; @Override public long currentTimeMS() { return currentTimeMS; } @Override public void currentTimeMS(long currentTimeMS) { this.currentTimeMS = currentTimeMS; }}在测试中,我使用FixedTimeSource,它可以是数据驱动的,例如由输入/事件设置。在生产中,我使用VanillaTimeSource.INSTANCE,它忽略输入/事件中的时间并使用当前时间。



