在Intellij中运行的测试用例很好,但在gradle中失败了



当我在IntelliJ中运行时,该测试通过:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String d1s = "11-Dec-2021";
String d2s = "12-Dec-2021";
Date d1 = formatter.parse(d1s);
Date d2 = formatter.parse(d2s);

但是,当我将'运行测试使用:'设置从Intellij IDEA更改为Gradle时,它失败了。

DeleteCommandTest > deleteExpense() FAILED
java.text.ParseException: Unparseable date: "11-Dec-2021"
at java.base/java.text.DateFormat.parse(DateFormat.java: 395)
at seedu.duke.command.DeleteCommandTest.deleteExpense(DeleteCommandTest.java:22)

我如何解决这个问题,为什么会发生这种情况?

原因是月模式MMM的地区敏感性。来自API文档:

SimpleDateFormat是以语言环境敏感的方式格式化和解析日期的具体类。

12在英语地区是Dec,在德语地区是Dez,在法语地区是Déc。似乎IntelliJ和Gradle在不同的语言环境设置下运行。您的问题的解决方案是使用期望的区域设置构造SimpleDateFormat:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);

相关内容

  • 没有找到相关文章

最新更新