Maison > Java > javaDidacticiel > Pourquoi mon test unitaire DateTimeFormatterBuilder échoue-t-il, mais le runtime fonctionne avec la même chaîne d'entrée ?

Pourquoi mon test unitaire DateTimeFormatterBuilder échoue-t-il, mais le runtime fonctionne avec la même chaîne d'entrée ?

Susan Sarandon
Libérer: 2024-11-28 13:35:12
original
247 Les gens l'ont consulté

Why Does My DateTimeFormatterBuilder Unit Test Fail, But Runtime Works with the Same Input String?

DateTimeFormatterBuilder échoue dans l'environnement de test

Problème :

Un test unitaire pour DateTimeFormatterBuilder échoue avec la même chaîne d'entrée qui fonctionne au moment de l'exécution. La valeur de chaîne testée est "25-May-2018 11:10".

Méthode testée :

public void getTimeDifference(@RequestParam String startDate, @RequestParam String endDate) {
    DateTimeFormatter DATE_TIME_FORMAT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("dd-MMM-yyyy HH:mm").toFormatter();
    LocalDateTime.parse(startDate,DATE_TIME_FORMAT);
    return   messages;
}
Copier après la connexion

Test Méthode :

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

Enquête :

  • Au moment de l'exécution, l'application fonctionne correctement lors de l'analyse de la chaîne spécifiée.
  • Au moment du test, la même chaîne ne parvient pas à parse.

Solution :

Le problème survient en raison de l'utilisation des paramètres régionaux par défaut de la JVM pour analyser le nom du mois dans la chaîne. Pour le résoudre, spécifiez les paramètres régionaux Locale.ENGLISH lors de la création du formateur.

DateTimeFormatter DATE_TIME_FORMAT = new DateTimeFormatterBuilder()
    .parseCaseInsensitive()
    .appendPattern("dd-MMM-yyyy HH:mm")
    .toFormatter(Locale.ENGLISH);
Copier après la connexion

En définissant explicitement les paramètres régionaux, le formateur garantit une analyse cohérente quelles que soient les paramètres régionaux par défaut de la JVM, résolvant ainsi le problème dans l'environnement de test.

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