Heim >Java >javaLernprogramm >Warum schlägt mein Unit-Test für DateTimeFormatterBuilder fehl, aber die Ausführung zur Laufzeit ist erfolgreich?

Warum schlägt mein Unit-Test für DateTimeFormatterBuilder fehl, aber die Ausführung zur Laufzeit ist erfolgreich?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-08 13:08:11411Durchsuche

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

DateTimeFormatterBuilder-Testfehler

In einer Java-Anwendung schlägt ein Testfall für DateTimeFormatterBuilder fehl, wenn er als Komponententest ausgeführt wird, funktioniert jedoch ordnungsgemäß, wenn er ausgeführt wird zur Laufzeit. Das Problem ergibt sich aus der folgenden Testmethode:

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]);
}

Der Test versucht, eine Datumszeichenfolge mithilfe des DateTimeFormatterBuilder zu analysieren und erwartet ein bestimmtes Ergebnis. Der Test schlägt jedoch fehl, wenn er zum Testzeitpunkt ausgeführt wird.

Die Diskrepanz zwischen dem Verhalten zur Laufzeit und zum Testzeitpunkt ist auf die Tatsache zurückzuführen, dass der DateTimeFormatterBuilder in seiner toFormatter()-Methode kein Gebietsschema angibt. Dies bedeutet, dass der Formatierer das Standardgebietsschema der JVM verwendet, das zwischen Laufzeit- und Testumgebungen unterschiedlich sein kann. Um das Problem zu beheben, sollte die toFormatter()-Methode explizit ein Gebietsschema angeben, z. B. Locale.ENGLISH.

DateTimeFormatter DATE_TIME_FORMAT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("dd-MMM-yyyy HH:mm").toFormatter(Locale.ENGLISH);

Durch das Festlegen des Gebietsschemas stellt der DateTimeFormatterBuilder sicher, dass der Formatierer Datums- und Uhrzeitangaben konsistent über verschiedene hinweg analysiert Umgebungen.

Das obige ist der detaillierte Inhalt vonWarum schlägt mein Unit-Test für DateTimeFormatterBuilder fehl, aber die Ausführung zur Laufzeit ist erfolgreich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn