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
Susan Sarandonoriginal
2024-11-28 13:35:12314parcourir

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;
}

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]);
}

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);

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!

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