1

テストで特定の日付にシステム クロックを設定する必要があります。このようにして、テストでその日に発生する動作をシミュレートする必要があります。この記事を見つけましたhttp://www.javapractices.com/topic/TopicAction.do?Id=234

しかし、2.5.2013 などの偽のシステム クロックを設定する方法についてはあまりヒントがありません。

私を助けてください。

4

3 に答える 3

2

テストの時間を操作する必要があり、システムクロックを実際には変更しないと仮定すると... Joda-Timeの使用を検討してください。これには機能が組み込まれています。

// always return the same time when querying current time
DateTimeUtils.setCurrentMillisFixed(millis);

// then test 
assert new DateTime().getMillis() == millis;

// reset time
DateTimeUtils.setCurrentMillisSystem() 

ただし、Joda-Time を使用することと、ソリューションを自分で実装することのトレードオフを比較検討する必要があります。

于 2013-03-04T11:57:15.917 に答える
0

一般に、システムの日時を操作することは良い習慣ではありません。ユニットテストを実行するたびに、私の見通しがおかしくなり、過去からのあらゆる種類のリマインダーがどのようにポップアップしたかを今でも覚えています。

環境に応じて日時を返す静的クラスを作成できるため、テスト Env. 実際の実行中にアクセスできるdatetimeを設定できるようになり、システムの日付/時刻が返されます。

于 2013-03-04T11:50:18.507 に答える
0

しかし、2.5.2013 などの偽のシステム クロックを設定する方法についてはあまりヒントがありません。

します。手順に従って、システム時間へのすべての呼び出しをインターフェイスに置き換えたと思います(TimeSourceたとえば)。特定の日付をシミュレートする必要がある場合は、テスト クラスで次の実装を使用できます。

public final class TestTimeSrc implements TimeSource {

  public long currentTimeMillis() {
     Calendar calendar = Calendar.getInstance();
     calendar.set(2013, 4, 2);
     return calendar.getTime().getTime();
  }
} 
于 2013-03-04T11:50:50.803 に答える