У нас есть пользовательский источник данных, который расширяет BasicDataSource.Мы переопределили метод getConnection, который выполняет внутри него несколько вещей.Когда мы запускаем веб-приложение вне тестирования, когда мы вызываем сервис из контроллера, оно будет захватывать новое соединение и использовать его до тех пор, пока сервис не будет завершен.Все хорошо.Однако в интеграционном тесте соединение, по-видимому, перехватывается до того, как тест даже вызовет контроллер.Поток ниже
Обычный запуск: контроллер вызовов -> контроллер вызывает метод обслуживания -> соединение установлено -> метод обслуживания запущен и возвращается к контроллеру
Интеграционный тест: соединение установлено -> контроллер вызоваиз теста -> контроллер вызывает сервисный метод -> сервисный метод запускается и возвращается к контроллеру
Излишне говорить, что это вызывает у нас проблемы, поскольку правильное соединение очень важно для нашего приложения.Мысли?
Редактировать: По-прежнему возникают серьезные проблемы с этим.Мы достигли точки, когда нам нужно избегать создания интеграционных тестов или выполнять какое-либо ручное переключение соединений (что обходит половину точки тестов)
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'
}