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!