-1

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

dataSource {

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

    url = ...
    pooled = true
    ...

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

谢谢

4

2 回答 2

3

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

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 = ...
        }
    }
}
于 2013-08-24T23:43:24.907 回答
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"

    }
}
于 2016-05-27T18:23:45.083 回答