Scalatest在Play 2.2,Slick 3和HikariCP池db中出现顺序测试套件错误

时间:2016-01-28 05:15:07

标签: playframework slick scalatest hikaricp

现在我将我的应用程序更新为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),但在我的案例中无法弄清楚如何解决问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,感谢http://57f4dad48e7a4f7cd171c654226feb5a.proxysheep.com/questions/33223303/scala-play-slick-rejectedexecutionexception-on-scalatest-runs

中的最后评论

我将DAO对象重构为测试应用程序启动工作中的案例类和测试。

但在实际应用中存在相同的错误,因为控制器也是对象。事实上,从DAO发出的数据库请求是正确的,从控制器发出的请求完成了上述错误。因此,在实际应用程序中,我将所有数据库查询移动到DAO,并且所有测试套件都正确完成。