Java 8 的 java.time API 中的模拟时间 [英] Mocking time in Java 8's java.time API

查看:30
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆