【发布时间】:2018-11-04 16:16:41
【问题描述】:
我有一个针对DateTimeFormatterBuilder 的简单 jUnit 测试。
在运行时它可以工作,当一些 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]);
}
我的测试:在运行时我设置一个断点并在 Display-View 上测试它:
LocalDateTime.parse("25-May-2018 11:10",DATE_TIME_FORMAT)
在测试时使用相同的 spring-aplication-context 我在运行时做同样的事情,但它失败了。
有人有想法吗?
【问题讨论】:
-
你说“它失败了”,但不要告诉我们异常细节。信息?堆栈跟踪?有什么事吗?
-
除了你的问题,你为什么不直接解析成
Instant?你真的知道Instant是什么吗?它是UTC时间。Instant result = formatter.parse(lo.time, Instant::from);. -
您的语言环境是
US吗?如果不是,则预期的月份名称可能已本地化,与英文名称不匹配。
标签: java junit format java-time