我有一些測試類,它們啓動spring上下文,每個包含hibernate(和EntityManagerFactory)。春季測試:UnknownServiceException:ConnectionProvider
自定義TestExecutionListener確保彈簧上下文總是被標記爲髒的,所以上下文不應該被重用。
在一個Spring上下文(不是第一次啓動時)我得到的後續啓動:
org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.service.jdbc.connections.spi.ConnectionProvider]
什麼會導致此異常?之前的春季環境是否未正式關閉?
編輯/添加:上面的異常實際上是在啓動過程中嘗試在bean中啓動事務時拋出的。 (Lifecycle.start()
)。所以問題是爲什麼在應該存在時沒有可用的SessionFactory - 並且創建了第一個Spring測試上下文(用於第一個測試類)。
你的意思是@Transactional應該放在所有可能使用數據庫的測試上。這些註釋已經存在於豆類的適當位置。 我不明白爲什麼SessionFactory應該在加載Spring Context並且當前正在刷新(啓動)時關閉。 –
我正在談論AbstractTransactionalJUnit4SpringContextTests。 – jonasnas
我已經更新了我的答案,包括來自api文檔的文本 – jonasnas