1

統合テストを書いている間、私は応答にハードコードされた日付を期待していました。

基本的に私はハードコーディングexpected date value '2020-11-10T00:00:00.000-05:00' して実行しました new GregorianCalendar(2020, 10, 10).getTime()

ローカルで配置してアサートして実行すると成功しますが、同じコードが Bamboo ビルド サーバーにプッシュされると、生成された actualValue があった'2020-11-10T00:00:00.000Z'ため、テストは失敗しました。

  1. サーバー マシンが GMT になるように構成されているため、同じ calendar.getTime が 2 つの異なる時刻を生成するのはなぜですか?

  2. それらを同時に行うために何かできることはありますか、または他の回避策はありますか?

注: ここでは文字列にするか、時間なしで日付を比較することはできません。Spring MockWebServiceServer を使用しているため、responseXML をハードコーディングして日付を指定する必要があるためです。

 REQUESTAUTOMATESETTLEMENTWORKCASE("<aut:AutomateSettlementWorkcaseRequest xmlns:aut=\"http://www.abcd.com/abcd/workflow/services/workcase/model/AutomateSettlementWorkcase_1_0_0\">" +
          "  <aut:customerAccountId>5049903033584324</aut:customerAccountId>\n" +
          "  <aut:settlementDate>2020-11-10T00:00:00.000-05:00</aut:settlementDate>\n" +
          "  </aut:AutomateSettlementWorkcaseRequest>"),
4

1 に答える 1

3

入力データの「-5」の部分はそれを捨てています...理想的には、カレンダーを作成するときにタイムゾーンを指定し、UTC の午前 5 時に設定する必要があります (たとえば)。基本的に2020-11-10T00:00:00.000-05:00は と同じ瞬間2020-11-10T05:00:00.000Zです。

ここで、UTC からのオフセットを維持することが重要かどうかはわかりません。そうである場合は、カレンダーに適切なタイム ゾーンを設定する必要があります。入力データを生成するものと同じルールを持つタイム ゾーンです。そうでない場合は、UTC を使用して時刻を適切に設定します。

個人的にはJoda Timeを使用することをお勧めしますがCalendarDateこれははるかに優れた日付と時刻の API です。手始めに、ゼロベースの月はありません:)

于 2012-10-06T06:31:06.263 に答える