Hibernate Grails3.1.1,在单元测试中使用Java8时间api
我无法在使用LocalDate类型字段的单元测试中查询域类 我试图持久化日期和时间值,比如Java8中引入的LocalDate。Grails 3.1.1和Gorm 5是堆栈。我已经开始使用Hibernate 5了 我为日期和时间api的新类型映射添加了Hibernate Grails3.1.1,在单元测试中使用Java8时间api,hibernate,unit-testing,grails,groovy,Hibernate,Unit Testing,Grails,Groovy,我无法在使用LocalDate类型字段的单元测试中查询域类 我试图持久化日期和时间值,比如Java8中引入的LocalDate。Grails 3.1.1和Gorm 5是堆栈。我已经开始使用Hibernate 5了 我为日期和时间api的新类型映射添加了compile“org.hibernate:hibernate-java8:5.0.7.Final”。这在运行应用程序时效果很好。持久化和加载是可能的 另一方面是单元测试。例如,以这个域类为例: class Event { String n
compile“org.hibernate:hibernate-java8:5.0.7.Final”
。这在运行应用程序时效果很好。持久化和加载是可能的
另一方面是单元测试。例如,以这个域类为例:
class Event {
String name
LocalDate date
}
这个单元测试:
void "test criteria with date"() {
when:
def c = Event.createCriteria()
c.list {
eq("date", LocalDate.now())
}.each {
println it
}
then:
true
}
它与此崩溃:
java.lang.IllegalArgumentException: Property [date] is not a valid property of class [localdate.Event]
at grails.gorm.CriteriaBuilder.validatePropertyName(CriteriaBuilder.java:1132)
at grails.gorm.CriteriaBuilder.eq(CriteriaBuilder.java:489)
at localdate.EventControllerSpec.test criteria with date_closure2(EventControllerSpec.groovy:31)
at localdate.EventControllerSpec.test criteria with date_closure2(EventControllerSpec.groovy)
at groovy.lang.Closure.call(Closure.java:426)
at groovy.lang.Closure.call(Closure.java:420)
at grails.gorm.CriteriaBuilder.invokeClosureNode(CriteriaBuilder.java:1157)
at grails.gorm.CriteriaBuilder.list(CriteriaBuilder.java:279)
at grails.gorm.CriteriaBuilder.list(CriteriaBuilder.java:52)
at localdate.EventControllerSpec.test criteria with date(EventControllerSpec.groovy:30)
我的猜测是,作为单元测试进行测试时,新类型不可用。另一方面,如果测试是作为集成测试进行的,那么测试是有效的
我不想被迫在集成测试中测试所有控制器逻辑。如何使域类单元再次可测试?中描述的HibernateTestMixin解决了该问题。在上面给出的示例中,我添加了:
@Domain(Event)
@TestMixin(HibernateTestMixin)
您还需要一个额外的依赖项:
testCompile 'org.grails:grails-datastore-test-support:5.0.1.RELEASE'
如中所述的HibernateTestMixin解决了该问题。在上面给出的示例中,我添加了:
@Domain(Event)
@TestMixin(HibernateTestMixin)
您还需要一个额外的依赖项:
testCompile 'org.grails:grails-datastore-test-support:5.0.1.RELEASE'
有多个实现
LocalDate
。在单元测试中,import
是否引用了与域中相同的类?我使用java.time.LocalDate作为所有类,LocalDate
有多个实现。在您的单元测试中,导入
引用的类是否与您的域中的类相同?我使用java.time.LocalDate来表示所有的类