システムのクロックのテストを扱う JUnit クラスがあります。時計には、jump(long milliSeconds
基本的に時計を指定された時間にジャンプさせるメソッドがあり、時計のインスタンスフィールドをcurrentTime
ジャンプメソッドに渡されたパラメーターに設定します。
したがって、3 つの JUnit メソッドがあります。最初の例では、クロックで何も呼び出していないため、クロックの現在の時刻が 0 であることを単純にテストしています。あとは、時計を指定時刻に一度ジャンプさせると、現在の時刻に正しく反映されることをテストしているところです。最後に、jump メソッドを数回呼び出して、各ジャンプの後、現在の時刻が正しいかどうかをテストしています。
私が抱えている問題は、JUnit テストが成功する場合と失敗する場合があることです。上記の 3 つの JUnit メソッドを 1 回実行すると、成功したとします。それはいいです。次に、3 つをもう一度実行すると、時計の現在の時刻が 0 ではなく、最後のテストで呼び出された最後のジャンプであるため、最初の 1 つが失敗します。
3 つの JUnit メソッドをすべて順番に実行した後、テストを再度実行した場合に何をしたかを「覚えていない」と考えたため、これについて混乱しています。
では、現在の時刻を 0 に初期化する必要があり@Before setUp()
ますか? 問題は、上記が発生するのはたまにしかないということです。5分待ってからもう一度実行すると。それはうまくいきます。その後、すぐにもう一度実行すると、同じエラーが発生します。
おそらく、Clock クラスを final として宣言したという事実と関係がありますか? または、Singleton デザイン パターンを適用したことはありますか?