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
Libérer: 2024-11-28 16:39:11
original
295 Les gens l'ont consulté

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal