java DateTimeFormatterBuilder не выполняется во время тестирования

У меня есть простой тест JUnit для DateTimeFormatterBuilder, Во время выполнения это работает, когда некоторые String приходит на Spring-MVC hanlder (@RequestParam)

Во время теста это не с тем же String значение.

Проверенное значение: 25-May-2018 11:10

Метод для тестирования:

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

Мой тест: во время выполнения я устанавливаю точку останова и тестирую ее в Display-View:

LocalDateTime.parse("25-May-2018 11:10",DATE_TIME_FORMAT)

Во время тестирования с тем же Spring-Aplication-Context я делаю то же самое, что и во время выполнения, и это не удается.

У кого-нибудь есть идеи?

1 ответ

Название месяца на английском языке, так что лучше установить java.util.Locale в форматере.

Если вы не установите его, средство форматирования будет использовать локаль по умолчанию JVM. И если это не английский язык, вы можете получить ошибку (и в разных средах могут быть разные конфигурации, поэтому лучше установить языковой стандарт, чем полагаться на JVM по умолчанию).

Просто делать toFormatter(Locale.ENGLISH) вместо просто toFormatter() и это все.

Другие вопросы по тегам