绝对难倒这一点。
我有两个成功通过的控制器集成测试。但是,在 Intellij 或 via 中运行时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.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@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 位。
这是一个线程转储。
我不知道如何进一步调试。有任何想法吗?