時間に関係するテスト

プログラム開発にテストはつきもので、テストの際に特定の年月日でプログラムの動作を確認しなければならないことがよくあります。その場合に手っ取り早いのは「コンピュータのシステム日付を変更する」という方法ですが、Windows ではバックグラウンドで多くのプログラムが動いており、システムへの影響を予測できないためできればその方法は避けたいものです。
そこで、API フックを利用して、特定のプログラムに対してシステム日付とは異なる日付を伝えるツール「HookDate」を作ってみました。

自動テストを書く場合は、できるだけ現在時刻に依存しないテストを書くべきだと思っていますが、受け入れテストレベル、自動テストでもSeleniumとかで行う場合やデスクトップアプリのテストでは、どうしても現在時刻を変えた方が楽な場合とかもあるので、これは便利かも。