繁体   English   中英

Grails 2.5.5单元测试中的Java8日期

[英]java8 dates in grails 2.5.5 unit testing

我在Java 8中使用grails 2.5.5。为了使新的日期生效,我定义了Java 8日期(ZonedDateTime)与数据库/休眠日期之间的映射。 效果很好,一点问题都没有

这是问题开始的地方: 单元测试 :我有一种使用的方法

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

现在的问题是startDate是ZonedDateTime,并且我收到了startDate不是Foo的不存在属性的错误。 使用FindAllBy会遇到相同的问题。

我无法模拟此方法,因为它是私有方法。 如何在单元测试中使用这些Java 8日期?

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

每个日期都有不同的格式,因此您必须检查日期是否具有相同的类型和格式。 您的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格式

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

使用FindAllBy会遇到相同的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM