JMockit で java.util.Calendar のメソッドを Mock 化する - kntmr-blog
上記のエントリでは java.util.Calendar#getTimeInMillis
を Mock 化してミリ秒を取得する例を挙げましたが、そもそもミリ秒を取得するだけなら java.lang.System#currentTimeMillis
を使うよね、という話。
で、java.lang.System#currentTimeMillis
を Mock 化する場合。
@Mocked System system; @Test public void test() { final long expected = 1234567890000L; new Expectations() { { System.currentTimeMillis(); result = expected; } }; long actual = System.currentTimeMillis(); // 1234567890000 が返る assertThat(actual, is(expected)); }
今回、MockUp<T>
ではなく Expectations
で Mock 化してみた。ただ、@Mocked System system;
って場合によっては影響範囲が大きそう…。JMockit の仕組み上、しょうがないのかもしれないけど。