java.time.DateTimeFormatterBuilder 在测试期间失败
在运行时,应用 java.time.DateTimeFormatterBuilder 解析特定模式可以完美地工作。但是,当使用相同的输入字符串值在 JUnit 测试中执行相同的操作时,会发生错误。
测试用例详细信息
代码片段
@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]); }
解析方法在 DateTimeFormatterBuilder 中使用以下模式:
new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("dd-MMM-yyyy HH:mm").toFormatter();
遇到错误
测试失败具有相同的输入字符串值
分辨率
输入字符串中的月份名称为英文。为了确保一致性,在创建格式化程序时必须设置特定的语言环境(在本例中为 Locale.ENGLISH)。
new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("dd-MMM-yyyy HH:mm").toFormatter(Locale.ENGLISH);
通过显式设置语言环境,格式化程序可以一致地解析输入字符串,而不管输入字符串如何JVM 的默认区域设置,解决运行时和测试时行为之间的差异。
以上是为什么我的'java.time.DateTimeFormatterBuilder”在 JUnit 测试中失败,但在运行时正常?的详细内容。更多信息请关注PHP中文网其他相关文章!