絕對難倒了這一點。Grails控制器/集成測試成功,但永遠掛起
我有兩個控制器集成測試成功通過。但是,在Intellij或通過gradle check
運行時,JVM不會退出。如果我註釋掉整個集成測試,那麼JVM就會徹底退出。
當調試任何集成測試時,我可以暫停一下,看看有幾個線程處於不同的狀態:WAITING,RUNNING,SLEEPING。
在application.yml
使用的數據庫是完全在內存中的一個:
url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
改變這種基於文件不能解決問題。更改DB_CLOSE_ON_EXIT=TRUE
也沒有幫助。
我嘗試刪除@Rollback
,甚至使用@Transactional
超時,但這並沒有解決它。
在新項目上創建集成測試,沒有死鎖/掛起/等待。
我已經通過修訂回去找到此行爲開始處的變更集,但這些變更純粹是在其中一個集成測試中的GSP,控制器和其他聲明&測試方法。
在日誌的最後一行是:
INFO org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext - Closing org.springframework.boot[email protected]73386d72: startup date [Mon May 30 18:48:25 BST 2016]; root of context hierarchy
INFO org.springframework.context.support.DefaultLifecycleProcessor - Stopping beans in phase -2147483648
INFO org.grails.plugins.datasource.TomcatJDBCPoolMBeanExporter - Unregistering JMX-exposed beans on shutdown
INFO org.grails.plugins.datasource.TomcatJDBCPoolMBeanExporter - Unregistering JMX-exposed beans
INFO org.hibernate.tool.hbm2ddl.SchemaExport - HHH000227: Running hbm2ddl schema export
INFO org.hibernate.tool.hbm2ddl.SchemaExport - HHH000230: Schema export complete
我已經試過割集成測試方法到一個方法和問題仍然存在。
我使用的版本是:
$ ~/apps/grails-3.1.5/bin/grails --version
|Grails Version: 3.1.5
|Groovy Version: 2.4.6
|JVM Version: 1.8.0_92
的Windows 10 64位。
Here's線程轉儲。
我不知道如何進一步調試。有任何想法嗎?
你有嘗試設置'DB_CLOSE_ON_EXIT = TRUE;對數據庫的URL? – Joch
剛剛嘗試過,並沒有解決它。不過謝謝。發佈更新。 –
難道你沒有任何線程,你沒有停止或設置爲守護進程?在新項目上運行集成測試時JVM停止了嗎? – Joch