java DateTimeFormatterBuilder 在测试时失败

标签 java junit format java-time

我有一个简单的 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/

相关文章:

java - Java中求最大数

java - Java 9 中不推荐使用 Observer。我们应该使用什么来代替它?

java - Maven 应用程序无法连接到数据库服务器

spring-boot - Junit5-木星所有测试套件@BeforeAll @AfterAll 不起作用

java - 打印正确的小数位数? (printf)-JAVA

javascript - 如何在javascript中将浮点值转换为日期时间格式

java - 在 Struts2 拦截器中使用资源包

java - 从属性文件读取时遇到问题

java - 如何使用 Mockito 测试 SOAP 消息?

Java随机生成两位小数格式的价格