ホームページ > Java > &#&チュートリアル > Java DateTimeFormatterBuilder 単体テストは失敗するのに、ランタイム実行は成功するのはなぜですか?

Java DateTimeFormatterBuilder 単体テストは失敗するのに、ランタイム実行は成功するのはなぜですか?

Barbara Streisand
リリース: 2024-11-28 16:39:11
オリジナル
353 人が閲覧しました

Why Does My Java DateTimeFormatterBuilder Unit Test Fail, But Runtime Execution Succeeds?

単体テスト コンテキストで 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート