我的 FlatSpec 测试抛出:
java.util.concurrent.RejectedExecutionException: Task slick.backend.DatabaseComponent$DatabaseDef$$anon$2@dda460e rejected from java.util.concurrent.ThreadPoolExecutor@4f489ebd[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2]
但只有当我运行不止一套套件时,在第二套房向前;似乎有一些东西在测试之间没有重置。我在用着OneAppPerSuite
提供应用程序上下文。每当我使用OneAppPerTest
,在第一次测试/套件后再次失败。
我有一个override def beforeEach = tables.foreach ( _.truncate )
设置清除表格,其中truncate
只是从表中删除所有内容:Await.result (db.run (q.delete), Timeout.Inf)
我的 DAO 层有以下设置:
SomeMappedDaoClass extends SomeCrudBase with HasDatabaseConfig
where
trait SomeCrudBase { self: HasDatabaseConfig =>
override lazy val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
implicit lazy val context = Akka.system.dispatchers.lookup("db-context")
}
And in application.conf
db-context {
fork-join-executor {
parallelism-factor = 5
parallelism-max = 100
}
}
我正在重构代码以摆脱 Play 的 Guice DI。以前,当它有@Inject() (val dbConfigProvider: DatabaseConfigProvider)
并延伸HasDatabaseConfigProvider
相反,在 DAO 类上,一切都运行得很完美。现在不行了,我也不知道为什么。
先感谢您!