我的理解默认是Grails使用H2嵌入式数据库进行测试。 我的Datasource.groovy将本地Postgres数据库配置为根数据
dataSource {
driverClassName = "org.postgresql.Driver"
dialect = org.hibernate.dialect.PostgreSQLDialect
url = ...
pooled = true
...
但我不想在集成测试中使用它。我更喜欢使用H2嵌入式选项。那么如何在集成测试环境中覆盖它并使其使用嵌入式H2数据库?
由于
答案 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"
}
}