Java 8 的 java.time API 中的模拟时间 [英] Mocking time in Java 8's java.time API
本文介绍了Java 8 的 java.time API 中的模拟时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Joda Time 有一个很好的 DateTimeUtils.setCurrentMillisFixed() 模拟时间.
Joda Time has a nice DateTimeUtils.setCurrentMillisFixed() to mock time.
在测试中非常实用.
Java 8 的 java 中是否有等价物.time API?
推荐答案
最接近的是 Clock
对象.您可以使用任何时间(或从系统当前时间)创建时钟对象.所有 date.time 对象都重载了 now
方法,这些方法采用时钟对象代替当前时间.所以你可以使用依赖注入来注入具有特定时间的时钟:
The closest thing is the Clock
object. You can create a Clock object using any time you want (or from the System current time). All date.time objects have overloaded now
methods that take a clock object instead for the current time. So you can use dependency injection to inject a Clock with a specific time:
public class MyBean {
private Clock clock; // dependency inject
...
public void process(LocalDate eventDate) {
if (eventDate.isBefore(LocalDate.now(clock)) {
...
}
}
}
有关详细信息,请参阅时钟 JavaDoc
这篇关于Java 8 的 java.time API 中的模拟时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文