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()
и это все.