我在Java 8中使用grails 2.5.5。为了使用新日期,我定义了java8日期(ZonedDateTime)和数据库/休眠日期之间的映射。这很好,没问题
问题出现在哪里:单元测试: 我有一个使用
的方法Foo.withCriteria{
ge("startDate",foo.startDate)
}
现在的问题是startDate是ZonedDateTime,我得到的错误是startDate不是Foo的存在属性。使用FindAllBy会产生同样的问题。
我不能模仿这个方法,因为它是一个私有方法。如何在单元测试中使用这些java 8日期?
(如果我提供的信息太少,请问,我可以提供,但我认为这已经足够了,我希望尽可能保持stackOverflow的一般性)
答案 0 :(得分:0)
每个日期都有不同的格式,因此您必须检查日期是否具有相同的类型和格式。您的Java 8可能使用 java.util.Date 和 SimpleDateFormatter 。
请检查您的单元测试框架日期格式,它可能是 DateTime 格式,因此会导致差异并可能导致您出错。
在以下代码中:
Foo.withCriteria{
ge("startDate",foo.startDate)
}
确保使用正确格式的单元测试框架正确初始化foo.startDate。
您还可以使用其他日期格式,例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse(currentDateText);
这些是非常流行的使用数据库的格式,可以解释原因
使用FindAllBy会产生同样的问题。