我有一个简单的 jUnit 测试 DateTimeFormatterBuilder
。
在运行时它可以工作,当一些 String
来自 Spring-MVC 处理程序 ( @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]);
}
我的测试:在运行时我设置了一个断点并在显示 View 上测试它:
LocalDateTime.parse("25-May-2018 11:10",DATE_TIME_FORMAT)
在测试时使用相同的 spring-aplication-context 我执行与运行时相同的操作,但失败了。
有人有想法吗?
最佳答案
月份名称是英文,所以你最好在格式化程序中设置一个java.util.Locale
。
如果不设置,格式化程序将使用 JVM 默认区域设置。如果不是英语,您可能会收到错误(不同的环境可能有不同的配置,因此最好设置语言环境,而不是依赖 JVM 的默认值)。
只需执行 toFormatter(Locale.ENGLISH)
而不是 toFormatter()
即可。
关于java DateTimeFormatterBuilder 在测试时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50526234/