Соединения Grails ведут себя совершенно иначе в тесте интеграции

У нас есть собственный источник данных, расширяющий 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'
}
6
задан Joseph 17 August 2011 в 21:16
поделиться