現在時刻がわれわれを困らせる C#ならDateTime.Now、JavaならSystem.currentTimeMillis()、現在時刻は簡単に取得できます。 しかしこれらの問い合わせ、コード中に書いてしまうと問題が出ます。 それは、 テストが書きづらくなる こと。実行機会ごとに違う値を返す存在が紛れ込んでいればコードの振る舞いも実行機会ごとに変わってしまうのだから当然のことです。 ですから、こうしましょう。 1. 時刻取得をするためだけのクラスを作る 2. そのクラスからインターフェースを抽出 3. アプリケーションコードは時刻取得インターフェースを叩くように書き、起動時に本物の時刻取得クラスを注入する 4. テスト時は、テスト用の固定時刻を返すテスト用クラスを注入する ややこしい? いえいえコードにしてみれば単純なことです。 まず時刻取得インターフェース(C#ならinterfaceに