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

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

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 16:39:11293parcourir

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

Java DateTimeFormatterBuilder rencontre des problèmes dans le contexte des tests unitaires

Dans une application Java, un test unitaire pour DateTimeFormatterBuilder échoue alors qu'il fonctionne correctement au moment de l'exécution. La méthode de test utilise un formateur avec le modèle jj-MMM-aaaa HH:mm pour analyser une entrée de chaîne.

La valeur de chaîne défaillante en question est "25-May-2018 11:10". Lorsqu'il est exécuté au moment de l'exécution, le formateur analyse avec succès cette chaîne. Cependant, la même chaîne provoque l'échec du test unitaire.

Cause :

Le nœud du problème réside dans le manque de spécification explicite de paramètres régionaux pour le formateur utilisé dans le test unitaire. DateTimeFormatter de Java s'appuie sur les paramètres régionaux par défaut de la JVM, qui peuvent ne pas toujours correspondre aux noms de mois attendus. Par conséquent, les paramètres régionaux par défaut de l'environnement de test peuvent différer de ceux de l'environnement d'exécution, ce qui entraîne des écarts d'analyse.

Solution :

Pour résoudre ce problème, définissez explicitement les paramètres régionaux du DateTimeFormatterBuilder vers Locale.ENGLISH. Ce faisant, le formateur interprétera systématiquement le nom du mois en anglais, garantissant ainsi la cohérence à la fois au moment de l'exécution et dans les tests unitaires.

Voici le code modifié avec les paramètres régionaux explicitement définis :

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

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