全くテストを意識しないで Calendar.getInstance() とか new Date() とかを使いまくるプログラムがあったとする。例えば、以下のようなものだ。 public void oomisoka() { Date date = new Date(); if (date.getMonth() == 11 && date.getDate() == 31) { // 12月31日にのみ行う処理… } } せめて引数で Date を受け取るようになっていれば…という感じだが、こういったメソッドをテストするにはどうしたらいいだろう? ユニットテスト実行前にシステム時刻を手動で変更 ユニットテスト内で date コマンドを実行してシステム日付を変更し、テスト終了後元に戻す あきらめる など様々な対処を見たが、JMockit などを使えば上記のような挑戦的プログラムも普通にテストができ