10

Java コードの一部として、明日 JUnit でいくつかのタスクを実行する必要があります。

たとえば、次の 3 つのタスクがあります。

  • task1 - 完了
  • task2 - 明日やる
  • task3 - これが起こる

したがって、要件に従って、今日の日付をJavaで明日に設定する必要があります。

4

4 に答える 4

7

重要なのは、依存関係として「現在の時刻を取得できるもの」のアイデアを抽出することです。(関連するタイムゾーンとともに。)

new Date()したがって、使用するか、抽象化System.currentTimeMillis()を使用する代わりに。Clock本番コードでは、基になるシステム クロックを使用する this のインスタンスを挿入しますが、テストでは、明示的に制御できる偽のクロックを使用して、必要なものを返すようにします。

(正直に言うと、何を達成しようとしているのか正確にはわかりませんが、このアプローチは、時間をテスト可能にするための私の標準的なアプローチです。)

于 2013-06-21T07:17:23.747 に答える
3

GitHub の次のコードを検討してください: DateSupplier && DateControllerDateSupplier現在の日付を返す静的メソッドがあります。テスト環境でDateController返される日付値を操作できます。DateSupplierそれは であり、JUnit Ruleそれ自体の後にクリーンアップします。

Clockこれは、他の2つの回答からのアイデアの具体的な実装です。私は自分のプロジェクトでそれを1年ほど使用しており、成功しています。代わりnew Date()に呼び出すコードがあるときはいつでも。DateSupplier.getCurrentDate()

于 2013-06-21T10:46:22.420 に答える