java DateTimeFormatterBuilder在测试时失败

时间:2018-05-25 09:46:04

标签: java junit format java-time

我对DateTimeFormatterBuilder进行了简单的jUnit测试。 在运行时它可以工作,当一些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 个答案:

答案 0 :(得分:1)

月份名称是英文,因此您最好在格式化程序中设置java.util.Locale

如果未设置,格式化程序将使用JVM默认语言环境。如果它不是英语,您可能会收到错误(并且不同的环境可能有不同的配置,因此最好设置语言环境而不是依赖于JVM的默认设置。)

只需toFormatter(Locale.ENGLISH)而不只是toFormatter(),就是这样。