3

インスタンス内のオブジェクトが作成され、適切な日付が設定されていることを確認する単体テストがあります。

    Date earlier = new Date();
    Thread.sleep(10);
    instance.execute();
    assertTrue(instance.getMyObject.getCreationDate().after(earlier));

このテストは、Eclipse またはコマンド ラインから Ant を使用して実行する場合、Windows 7 Java 6 で機能します。しかし、私のクライアントは、このテストが失敗したと言っています (彼は環境を指定しませんでした)。これはどうやってできるの?

4

3 に答える 3

8

Windows XP では、クロックの分解能は 1/60 秒にすぎません。これは、10 ミリ秒待つことができ、クロック時間が同じように表示されることを意味します。時間を 100 ~ 250 ミリ秒に増やします。

于 2012-04-10T13:08:59.973 に答える
3

System.currentTimeMillis は、プラットフォームごとに異なる「解像度」を持っています。Windows では 15 ミリ秒になることがあります。これは、10 ミリ秒の待機が必ずしも「後の」日付になるとは限らないことを意味します。

私はThread.sleep(10)toThread.sleep(100)または more を増やします。

于 2012-04-10T13:11:02.837 に答える
1

Peter Lawrey が回答したように、システム クロックの解像度は、「以前の」日付の作成とインスタンスの日付の間で更新されていないことを意味する場合があります。おそらく、コードを次のように変更します。

assertFalse(instance.getMyObject.getCreationDate().before(earlier));

このようにして、以前の日付より前ではないことを確認しているため、システム クロックが更新されたかどうかを心配する必要はありません。

于 2012-04-10T13:12:28.767 に答える