2012-03-16 11 views
1

何か起きた日付に依存する機能の受け入れ/統合テストを行うにはどうすればよいですか?日付イベントに依存する機能をテストするにはどうすればよいですか?

簡単にするため、この機能を想定します。フォルダを監視し、受信したファイルに対応するListViewに項目を追加します。リストビュー項目の色は、受信日によって異なります。たとえば、日曜日に受信された場合、色は赤、月曜日、それは青色などです。

週を実行することなくこの機能でテストコードを作成するにはどうすればよいですか?テストコードはシステムの日付を変更する必要があります(ただし、これはテストフレームワークとレポートで不思議に思うでしょう)。詳細については、アプリケーションは.netであり、開発者はDateTime.Nowを使用して受信時間を取得します。

これは単体テストではありませんが、これはユーザーの操作を模倣した受け入れテストです。

答えて

2
  • インターフェイスを必要とせずにDateTime.Nowが返すものをスタブできるFake Frameworkを使用する必要があります。それ以外の場合はTypeMock
  • と同じように、あなたはクラスを作成することができ、あなたが
  • そうでなければ(それだけであなたのコードをテストするために行われているとして、これはこの場合にはあまり望ましい)偽造をより詳細に制御を持っている独自のDateオブジェクトを作成することができますあなたがスタブできるGetCurrentDateメソッドを持っています。あなたのprodの実装では、DateTime.Nowを使用することができますが、テストでは、任意の日付を返すようにスタブすることができます。 これはおそらくIMO

はしかし、これは完全な、真の実装をテストしません最善のソリューションであり、ユニットテストの詳細です。実際にエンドツーエンドの統合テストについて話している場合は、システム時間を変更する必要があります。

0

イベントの直前までの時間を変更します。

0

必要なのは、DateTimeインターフェイスを「モック」するための方法です。つまり、DateTimeが現在の時刻ではなく、既定の値を返すようにする方法です。既存のものを置換するモッククラスを「注入」のプロセスは、「依存性注入」(DI)として知られており、そしてDIを行うためのフレームワークの数で議論されている:それは受け入れテストなら

Which .NET Dependency Injection frameworks are worth looking into?

+0

これは受け入れテストであり、単体テストではありません。既にコンパイルされている.exeに依存関係を挿入するにはどうすればよいですか? –

0

ユーザーとのやり取りが必要な場合は、システム時間を変更するのが最善の方法です。

ユニットテストの場合は、依存関係(DateTime)をテストするメソッドに渡す必要があります。

関連する問題