2013-08-24 2 views
-1

기본적으로 Grails는 테스트를 위해 H2 내장 데이터베이스를 사용합니다. 내 DataSource.groovy에이 루트 datasoureGrails에서 통합 테스트를 위해 H2 데이터베이스 사용

dataSource { 

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

    url = ... 
    pooled = true 
    ... 

같은 로컬 포스트 그레스 데이터베이스를 구성하지만이 통합 테스트에 사용하지 않습니다. H2 내장 옵션을 사용하는 것을 선호합니다. 그렇다면 통합 테스트 환경을 위해이를 어떻게 대체하고 임베디드 H2 데이터베이스를 사용합니까?

감사

답변

3

찾는 데이터 소스 블록의 기본 구성 및 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 = ... 
     } 
    } 
} 
+0

이 나를 위해 작동하지 않습니다 - 내 통합 테스트를 실행할 때, 배포 테스트 설정을하고 있다고하지만, 완전히 내 테스트 데이터 소스를 무시 이것은 mysql이고, 대신 datasourc.groovy에 h2 db에 대한 언급이 없더라도 알려지지 않은 메모리를 사용합니다. 아주 이상한. –

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" 

    } 
} 
관련 문제