java.time.DateTimeFormatterBuilder がテスト中に失敗する
実行時、特定のパターンを解析するための java.time.DateTimeFormatterBuilder の適用は問題なく機能します。ただし、同じ入力文字列値を使用して JUnit テストで同じ操作を実行すると、エラーが発生します。
テスト ケースの詳細
コードスニペット
@Test 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 内で次のパターンを使用します:
new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("dd-MMM-yyyy HH:mm").toFormatter();
エラーが発生しました
テストは失敗します実行中に機能するのと同じ入力文字列値を使用します。 runtime.
解像度
入力文字列の月名は英語です。一貫性を確保するには、フォーマッタの作成時に特定のロケール (この場合は Locale.ENGLISH) を設定する必要があります。
new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("dd-MMM-yyyy HH:mm").toFormatter(Locale.ENGLISH);
ロケールを明示的に設定することにより、フォーマッタは、 JVM のデフォルトのロケール。実行時とテスト時の動作の不一致を解決します。
以上が`java.time.DateTimeFormatterBuilder` が JUnit テストでは失敗するのに、実行時には動作するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。