可以对 Grails 中的 Hibernate 条件查询进行单元测试吗?

Can Hibernate criteria query in Grails be unit tested?

我正在尝试为没有单元测试的通用代码库(使用 Grails 2.5.1)编写单元测试,以便测试代码的每一部分。但是我在所有情况下都难以使用 Spock 测试标准查询。只能测试 eq - 如果使用 'in'sqlRestriction 则无法测试。

我卡住了,有更好的方法吗?

HibernateTestMixin 使用 Hibernate 4 和 H2 内存数据库。这使得在 Grails 单元测试中也可以使用所有 GORM 功能。

适用于 Hibernate 的 GORM 的所有功能都可以在 HibernateTestMixin 单元测试中进行测试,包括:

  • 基于字符串的 HQL 查询
  • 复合标识符
  • 脏检查方法
  • 与 Hibernate 的任何直接交互

HibernateTestMixin 背后的实现负责使用内存中的 H2 数据库设置 Hibernate。它仅配置给定域 类 以用于单元测试。 @Domain 注释用于告诉应该配置哪个域类。

将以下依赖项添加到 buildconfig

dependencies {
        test 'org.grails:grails-datastore-test-support:1.0-grails-2.4'
    }

添加使用测试 mixins

@Domain(Person)
@TestMixin(HibernateTestMixin)

来源:grails 2.5.1 reference documentation