我们有一个自定义数据源来扩展BasicDataSource。我们已经重写了getConnection方法,它在里面做了一些事情。当我们在测试之外运行webapp时,当我们从控制器调用服务时,它将获取一个新的连接并使用该连接,直到服务完成。一切都很好。但是,在集成测试中,连接似乎在测试甚至调用控制器之前被抓取。流量之下集成测试中Grails Connections的行为非常不同
正常运行: 呼叫控制器 - >控制器调用服务方法 - >连接抓起 - >运行服务方法,并返回到控制器
集成测试: 连接抓起 - >呼叫从测试控制器 - >控制器调用服务方法 - >服务方法运行并返回到控制器
不用说,这给我们带来了问题,因为正确的连接对我们的应用程序非常重要。思考?
编辑:仍然有这个重大的问题。我们已经到了一个地步,我们必须避免造成集成测试,或者做一些手动连接切换(这违背了测试的一半点)
DataSource.groovy的
dataSource {
pooled = true
dialect="org.hibernate.dialect.OracleDialect"
properties {
maxActive = 50
maxIdle = 10
initialSize = 10
minEvictableIdleTimeMillis = 1800000
timeBetweenEvictionRunsMillis = 1800000
maxWait = 10000
testWhileIdle = true
numTestsPerEvictionRun = 3
testOnBorrow = true
}
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}
是你在实现ControllerUnitTestCase吗?或者只是UnitTestCase? –
ControllerUnitTestCase – Joseph
您可以发布您的DataSource.groovy文件吗? –