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