簡體   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