単体テスト コンテキストで Java DateTimeFormatterBuilder の問題が発生する
Java アプリケーションでは、実行時に正しく機能しているにもかかわらず、DateTimeFormatterBuilder の単体テストが失敗します。このテスト メソッドでは、パターン dd-MMM-yyyy HH:mm のフォーマッタを使用して文字列入力を解析します。
問題の失敗した文字列値は「25-May-2018 11:10」です。実行時に実行されると、フォーマッタはこの文字列を正常に解析します。ただし、同じ文字列では単体テストが失敗します。
原因:
問題の核心は、で使用されるフォーマッタの明示的なロケール指定が欠如していることです。単体テスト。 Java の DateTimeFormatter は JVM のデフォルト ロケールに依存しているため、予期される月の名前と必ずしも一致しない可能性があります。その結果、テスト環境のデフォルトのロケールがランタイム環境と異なる可能性があり、解析の不一致が生じる可能性があります。
解決策:
この問題を解決するには、デフォルトのロケールを明示的に設定します。 DateTimeFormatterBuilder から Locale.ENGLISH へ。そうすることで、フォーマッタは一貫して月の名前を英語として解釈し、実行時と単体テストの両方で一貫性を確保します。
ロケールを明示的に設定した変更後のコードは次のとおりです。
DateTimeFormatter DATE_TIME_FORMAT = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendPattern("dd-MMM-yyyy HH:mm") .toFormatter(Locale.ENGLISH);
以上がJava DateTimeFormatterBuilder 単体テストは失敗するのに、ランタイム実行は成功するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。