JMockit で java.util.Calendar のメソッドを Mock 化する

必要に迫られて調べました。

以下は java.util.Calendar#getTimeInMillis の場合。

final long expected = 1234567890000L;
new MockUp<Calendar>() {
    @Mock
    public long getTimeInMillis() {
        return expected;
    }
};
long actual = Calendar.getInstance().getTimeInMillis(); // 1234567890000 が返る
assertThat(actual, is(expected));

他のメソッドも同じように Mock 化できるはず。

ちなみに

おそらく周知の事実とは思いますが、JMockitJUnit よりも先に読み込まれるように classpath を設定する必要があります。