Maison >Java >javaDidacticiel >Pourquoi mon test unitaire DateTimeFormatterBuilder échoue-t-il, mais l'exécution de l'exécution réussit-elle ?
Échec du test DateTimeFormatterBuilder
Dans une application Java, un scénario de test pour DateTimeFormatterBuilder échoue lorsqu'il est exécuté en tant que test unitaire mais fonctionne correctement lorsqu'il est exécuté au moment de l'exécution. Le problème provient de la méthode de test suivante :
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]); }
Le test tente d'analyser une chaîne de date à l'aide de DateTimeFormatterBuilder et attend un certain résultat. Cependant, le test échoue lorsqu'il est exécuté au moment du test.
L'écart entre le comportement au moment de l'exécution et au moment du test est dû au fait que DateTimeFormatterBuilder ne spécifie pas de paramètres régionaux dans sa méthode toFormatter(). Cela signifie que le formateur utilisera les paramètres régionaux par défaut de la JVM, qui peuvent différer entre les environnements d'exécution et de test. Pour résoudre le problème, la méthode toFormatter() doit spécifier explicitement des paramètres régionaux, tels que Locale.ENGLISH.
DateTimeFormatter DATE_TIME_FORMAT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("dd-MMM-yyyy HH:mm").toFormatter(Locale.ENGLISH);
En définissant les paramètres régionaux, DateTimeFormatterBuilder garantit que le formateur analysera les dates et les heures de manière cohérente dans différents environnements.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!