【发布时间】:2020-01-21 10:13:35
【问题描述】:
我有一个 java 方法,我想以某种方式模拟系统时钟以进行测试,所以我可以让该方法返回 1 分钟后的结果。我现在确实想使用一个线程并将时间阻塞一分钟,所以我想知道我是否可以伪造时间并假设已经过去了 1 分钟。
更具体地说,我有一个每 1 分钟运行一次的方法,我想测试它是否在 2 分钟后被调用了两次。
【问题讨论】:
-
检查stackoverflow.com/questions/5622194/… 是否回答了您的问题。在 Java8 中,您可以使用 java.time.Clock。
-
不是很清楚。我试图查看图书馆,但我没有看到它是如何设置假时间的
-
我不知道您使用哪些方法,但假设您使用 Instant.now().getEpochSecond(),您可以重构代码以注入时钟并使用 Instant.now(clock)。 getEpochSecond() 代替。然后在您的测试中,您可以传递一个模拟的 Clock 实例并定义行为。
标签: java