2016-10-05 6 views
0

私はgrails 2.5.5をjava 8で使用しています。新しい日付でこれを動作させるために、Java 8の日付(ZonedDateTime)とデータベース/休止状態の日付の間のマッピングを定義しました。これは、すべてのjava8 date in grails 2.5.5ユニットテスト

で、何の問題も正常に動作しない問題が始まるのはここです:ユニットテスト: I今

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

問題を用いる方法がたstartDateがZonedDateTimeであることであると私が得ますstartDateはFooの存在しないプロパティです。 FindAllByを使用すると、同じ問題が発生します。

私はこのメソッドをモックすることはできません。プライベートメソッドであるからです。これらのJava 8の日付を単体テストで処理するにはどうすればよいですか?

(私も少し情報を与えた場合には、ちょうど私が提供することができ、聞いて、私はこれで十分だろうと思ったと私はstackoverflowのために可能な限り一般として、それを維持したい)

+0

Java 8の日付とデータベース/休止状態の日付の間のマッピングを提供できますか?あなたがJava 8の日付と言ったら、あなたはjava.time.LocalDateTimeを使っているということですか?また、エラーメッセージが表示されますか? – Joe

+0

ZonedDateTimeこの場合、エラースタック全体またはエラー名だけが必要ですか? – miThom

+0

'grails.gorm.default.mapping = { " user-type "(タイプ:org.jadira.usertype.dateandtime.threeten.PersistentLocalDateTime、クラス:java.time.LocalDateTime) " user-type " org.jadira.usertype.dateandtime.threeten.PersistentZonedDateTime、クラス:java.time.ZonedDateTime)} ' – miThom

答えて

0

各日付はとても異なるフォーマットを持っています日付が同じタイプと形式であることを確認する必要があります。お使いのJava 8はおそらくjava.util.DateSimpleDateFormatterを使用しています。

ユニットテストフレームワークの日付形式を確認してください。DateTimeという形式になっていると、違いが生じ、エラーが発生する可能性があります。次のコードで

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

はfoo.startDateが正しい形式であなたのユニットテストフレームワークを使用して正しく初期化されたことを確認してください。あなたはまた、のような他の日付フォーマットを使用することができます

:FindAllByを使用して

が同じ与え理由

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

またはISO 8601 DateTime Format

これらは、説明することができ、データベースを使用して、非常に一般的なフォーマットは、問題。

+0

私はそれが別の方法だと思います。この例では、私はZonedDateTimeを使用しました。これは、テストフレームワークが知らない(それはjava.util.dateを知っています) – miThom

関連する問題