Maison >Java >javaDidacticiel >Pourquoi mon test unitaire DateTimeFormatterBuilder échoue-t-il, mais l'exécution de l'exécution réussit-elle ?

Pourquoi mon test unitaire DateTimeFormatterBuilder échoue-t-il, mais l'exécution de l'exécution réussit-elle ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-08 13:08:11406parcourir

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

É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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn