LoginSignup
9
10

More than 5 years have passed since last update.

Joda-Timeを使っているコードで現在日時を任意の値に設定してテストする

Last updated at Posted at 2014-11-18

日付操作をするためのJavaライブラリであるJoda-Timeにはorg.joda.time.DateTimeUtissetCurrentMillisFixedというメソッドが用意されています。これは、現在日時を任意の値に固定することが出来るもので、現在日時によって動的に処理が変化するコードのテストを楽に実施することができます。

Java 8ではJoda-Timeの有用性が薄れてきたり、新機能のClock使えば同じことができるけれど、ホラ、Java 8が禁止されてたりとか、あ、あるじゃない?

サンプルコード

@Test
public void somethingTest() {
    DateTime mockDateTime= new DateTime(2014, 1, 1, 0, 0, 0);
    DateTimeUtils.setCurrentMillisFixed(mockDateTime.getMills());

    // 現在日時を取得してみると、設定した日時が現在日時として取得される
    System.out.println(new DateTime()); // 2014-01-01T00:00:00.000+09:00

    // something test code...
}

@After
public void tearDown() {
    // 対象のテスト後にはシステム時刻を元に戻して安全性を保つ
    DateTimeUtils.setCurrentMillisSystem();
}

参考

DateTimeUtils (Joda-Time 2.5 API)
http://www.joda.org/joda-time/apidocs/org/joda/time/DateTimeUtils.html#setCurrentMillisFixed(long)

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10