java8 grails 2.5.5 单元测试中的日期

java8 dates in grails 2.5.5 unit testing

我正在使用带有 java 8 的 grails 2.5.5。为了让它与新日期一起工作,我定义了 java 8 个日期 (ZonedDateTime) 和 database/hibernate 日期。这很好用,一点问题都没有

问题从这里开始:单元测试: 我有一个使用

的方法
Foo.withCriteria{
    ge("startDate",foo.startDate)
}

现在的问题是 startDate 是一个 ZonedDateTime,我收到错误消息,指出 Foo 的 startDate 不存在 属性。使用 FindAllBy 会出现同样的问题。

我不能模拟这个方法,因为它是一个私有方法。我如何让这些 java 8 个日期在单元测试中工作?

(如果我提供的信息太少,尽管问,我可以提供,但我认为这就足够了,我希望它尽可能通用以用于 Whosebug)

每个日期都有不同的格式,因此您必须检查日期的类型和格式是否相同。您的 Java 8 可能使用 java.util.DateSimpleDateFormatter.

请检查您的单元测试框架日期格式,它可能是 DateTime 格式,因此会导致差异并可能导致您出错。

关于以下代码:

Foo.withCriteria{
    ge("startDate",foo.startDate)
}

确保 foo.startDate 已使用格式正确的单元测试框架正确初始化。

您还可以使用其他日期格式,例如:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse(currentDateText);

ISO 8601 DateTime Format

这些是使用数据库的非常流行的格式,这可以解释为什么

Using FindAllBy gives the same problem.