现在我将我的应用程序更新为Play 2.4和Slick 3。 要测试应用程序,我使用Scalatest和几个测试套件。
接下来的问题。第一个测试套件正确执行,但第二个测试套件崩溃并出现下一个错误:
测试于6:29开始......
2016-01-28 06:29:51不建议使用conf文件中的记录器配置,但不起作用。请改用logback配置文件。 2016-01-28 06:30:00 Slf4jLogger开始了 2016-01-28 06:30:01在测试模式下加载测试数据 2016-01-28 06:30:01等待测试数据插入 2016-01-28 06:30:05 HikariCP pool db正在启动。 2016-01-28 06:30:08完成测试数据处理 2016-01-28 06:30:12 HikariCP池数据库正在关闭。
任务slick.backend.DatabaseComponent$DatabaseDef$$anon$2@1b4b7b30被java.util.concurrent.ThreadPoolExecutor@3898128a拒绝[已终止,池大小= 0,活动线程= 0,排队任务= 0,已完成任务= 3 ] java.util.concurrent.RejectedExecutionException:任务slick.backend.DatabaseComponent$DatabaseDef$$anon$2@1b4b7b30被java.util.concurrent.ThreadPoolExecutor@3898128a拒绝[已终止,池大小= 0,活动线程= 0,排队任务= 0 ,已完成的任务= 3] ..........
我制作了一个允许查看问题的小项目: https://github.com/DmitryIvanovIAMM/test
有趣的是,对于第二个测试套件,应用程序正确初始化模型,但在此之后关闭HikariCP池db并且我们有错误。 我看到类似的问题(f.e。https://github.com/playframework/play-slick/issues/345),但在我的案例中无法弄清楚如何解决问题。
感谢您的帮助!
答案 0 :(得分:0)
我将DAO对象重构为测试应用程序启动工作中的案例类和测试。
但在实际应用中存在相同的错误,因为控制器也是对象。事实上,从DAO发出的数据库请求是正确的,从控制器发出的请求完成了上述错误。因此,在实际应用程序中,我将所有数据库查询移动到DAO,并且所有测试套件都正确完成。