DateTimeFormatterBuilder テストの失敗
Java アプリケーションで、DateTimeFormatterBuilder のテスト ケースは、単体テストとして実行すると失敗しますが、実行すると正しく動作します実行時。この問題は、次のテスト メソッドから発生します。
public void testFormat() throws Exception { final String startDateFormatA = "25-May-2018 11:10"; final String endDateFormatA = "25-May-2018 11:10"; assertEquals("06:00", callDbController.getTimeDifference(startDateFormatA, endDateFormatA)[1]); }
このテストは、DateTimeFormatterBuilder を使用して日付文字列の解析を試み、特定の結果を期待します。ただし、テスト時に実行するとテストは失敗します。
実行時の動作とテスト時の動作の不一致は、DateTimeFormatterBuilder の toFormatter() メソッドでロケールが指定されていないことが原因です。これは、フォーマッタが JVM のデフォルト ロケールを使用することを意味します。このロケールは、実行時環境とテスト環境で異なる場合があります。この問題を解決するには、toFormatter() メソッドで、Locale.ENGLISH などのロケールを明示的に指定する必要があります。
DateTimeFormatter DATE_TIME_FORMAT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("dd-MMM-yyyy HH:mm").toFormatter(Locale.ENGLISH);
ロケールを設定することで、DateTimeFormatterBuilder はフォーマッタが異なる日付と時刻を一貫して解析できるようにします。環境
以上がDateTimeFormatterBuilder 単体テストは失敗するのに、ランタイム実行は成功するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。