Я использую Grails 3.3.1 и получаю сообщение об ошибке «Не найден сеанс для текущего потока» при выполнении всех моих интеграционных тестов с помощью команды Gradle «integraTest».
У меня есть несколько тестов интеграции сервисов, которые работают самостоятельно. Точно так же у меня есть тесты GEB, которые проводятся без неудачных тестов. Однако, когда я включаю выполнение тестов GEB в сервисные тесты, любые сервисные тесты, которые происходят после тестов GEB, завершаются с ошибкой «org.hibernate.HibernateException: не найден сеанс для текущего потока». Сервисные тесты, которые выполняются перед тестами GEB, проходят без проблем.
Ниже приведен пример тестов интеграции служб. Ошибка выдается при попытке сохранения первого объекта в базе данных.
@Rollback
@Integration
class AppUserServiceSpec extends Specification {
//--uses Test database
@Autowired AppUserService appUserService
SessionFactory sessionFactory
private AppUser setupData(){
//--data rolled back after each test
AppUser appUser = new AppUser(username: 'a', firstName: 'a', lastName: 'a', enabled: true).save(flush: true, failOnError: true)
new AppUser(username: 'b', firstName: 'b', lastName: 'b', enabled: true).save(flush: true, failOnError: true)
new AppUser(username: 'c', firstName: 'c', lastName: 'c', enabled: true).save(flush: true, failOnError: true)
new AppUser(username: 'd', firstName: 'd', lastName: 'd', enabled: true).save(flush: true, failOnError: true)
new AppUser(username: 'e', firstName: 'e', lastName: 'e', enabled: true).save(flush: true, failOnError: true)
return appUser
}
void "Test something"() {
given:
setupData()
//--test stuff here
}
Я подозреваю, что это связано с тем, что тесты запускали приложение дважды: один раз для первого регулярного интеграционного теста и снова для первого теста GEB.
Testing started at 3:48 PM ...
3:48:24 PM: Executing task 'integrationTest --tests *.*'...
:compileJava NO-SOURCE
:compileGroovy
:buildProperties
:processResources
:classes
:configureChromeDriverBinary SKIPPED
:configureGeckoDriverBinary SKIPPED
:compileTestJava NO-SOURCE
:compileTestGroovy
:processTestResources NO-SOURCE
:testClasses
:compileIntegrationTestJava NO-SOURCE
:compileIntegrationTestGroovy
:processIntegrationTestResources
:integrationTestClasses
:integrationTest
2019-01-07 15:48:43.048 INFO My Application 2019-01-07 15:48:43.048 INFO My Application
Configuring Spring Security Core ...
... finished configuring Spring Security Core
Configuring Spring Security LDAP ...
... finished configuring Spring Security LDAP
2019-01-07 15:48:54.065 INFO My Application Grails application running at http://localhost:51962/application in environment: test
2019-01-07 15:48:54.706 INFO My Application 2019-01-07 15:48:54.706 INFO My Application
Configuring Spring Security Core ...
... finished configuring Spring Security Core
Configuring Spring Security LDAP ...
... finished configuring Spring Security LDAP
2019-01-07 15:48:57.847 INFO My Application Grails application running at http://localhost:51969/application in environment: test
Started InternetExplorerDriver server (32-bit)
2.47.0.0
Listening on port 36464
No Session found for current thread
org.hibernate.HibernateException: No Session found for current thread