java8中的日期格式2.5.5单元测试

时间:2016-10-05 10:50:09

标签: unit-testing date grails java-8 grails-2.5

我在Java 8中使用grails 2.5.5。为了使用新日期,我定义了java8日期(ZonedDateTime)和数据库/休眠日期之间的映射。这很好,没问题

问题出现在哪里:单元测试: 我有一个使用

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

现在的问题是startDate是ZonedDateTime,我得到的错误是startDate不是Foo的存在属性。使用FindAllBy会产生同样的问题。

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

(如果我提供的信息太少,请问,我可以提供,但我认为这已经足够了,我希望尽可能保持stackOverflow的一般性)

1 个答案:

答案 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);

ISO 8601 DateTime Format

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

  

使用FindAllBy会产生同样的问题。