使用H2数据库在Grails中进行集成测试

时间:2013-08-24 23:22:16

标签: grails

我的理解默认是Grails使用H2嵌入式数据库进行测试。 我的Datasource.groovy将本地Postgres数据库配置为根数据

dataSource {

    driverClassName = "org.postgresql.Driver"
    dialect = org.hibernate.dialect.PostgreSQLDialect

    url = ...
    pooled = true
    ...

但我不想在集成测试中使用它。我更喜欢使用H2嵌入式选项。那么如何在集成测试环境中覆盖它并使其使用嵌入式H2数据库?

由于

2 个答案:

答案 0 :(得分:3)

将基线配置放在dataSource块中,并使用环境块覆盖它,如Grails文档的4.2 Environments部分所述。

dataSource {
    pooled = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
}
environments {
    development {
        dataSource {
            dbCreate = "create-drop"
            url = "jdbc:h2:mem:devDb:MVCC=TRUE;LOCK_TIMEOUT=10000"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb:MVCC=TRUE;LOCK_TIMEOUT=10000"
        }
    }
    production {
        dataSource {
            driverClassName = "org.postgresql.Driver"
            dialect = org.hibernate.dialect.PostgreSQLDialect
            dbCreate = ...
            url = ...
        }
    }
}

答案 1 :(得分:0)

我有同样的问题,但直到现在我还没有找到答案。也许在Datasource.groovy中设置字段方言如下:

test {
    dataSource {
           dbCreate = "update"
           dialect='org.hibernate.dialect.H2DialectPatch'
           url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"

    }
}