Testing 多个播放测试错误:";从已关闭的池中获取连接;

Testing 多个播放测试错误:";从已关闭的池中获取连接;,testing,playframework-2.2,bonecp,Testing,Playframework 2.2,Bonecp,我正在编写启动Play 2.2.2应用程序(例如,Helpers.running(fakeApplication){…})的集成测试。第一个测试无误完成,但下一个测试给出以下(节略)堆栈跟踪: java.sql.SQLException: Attempting to obtain a connection from a pool that has already been shutdown. Stack trace of location where pool was shutdown fol

我正在编写启动Play 2.2.2应用程序(例如,
Helpers.running(fakeApplication){…}
)的集成测试。第一个测试无误完成,但下一个测试给出以下(节略)堆栈跟踪:

java.sql.SQLException: Attempting to obtain a connection from a pool that has already been shutdown. 
Stack trace of location where pool was shutdown follows:
 java.lang.Thread.getStackTrace(Thread.java:1588)
 com.jolbox.bonecp.BoneCP.captureStackTrace(BoneCP.java:572)
 com.jolbox.bonecp.BoneCP.shutdown(BoneCP.java:161)
 com.jolbox.bonecp.BoneCPDataSource.close(BoneCPDataSource.java:143)
 play.api.db.BoneCPApi.shutdownPool(DB.scala:411)
 myApp.ApplicationTest$$anonfun$1.apply(ApplicationTest.scala:31)
    at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:553)
    at controllers.Application$$anonfun$tests$1.apply(Application.scala:149)
    at play.api.mvc.ActionBuilder$$anonfun$apply$10.apply(Action.scala:221)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
我目前的解决办法是(根据):


有更好的方法吗?根本的问题是什么?在测试结束时关闭连接池是可以的,但我原以为在第二次播放应用程序时会启动一个新的连接池?

是否可以引用池并将其作为字段保留在对象内?Objects与jvm共存,因此第一个测试中的连接池将在其余测试中保持不变。我遇到了相同的问题,因此我打开了一个播放问题:
class MyBoneCPPlugin(app: play.api.Application) extends BoneCPPlugin(app) {

  override def onStop() {
    // Prevent stopping the plug-in to avoid "Attempting to obtain a connection from a pool that has already been 
    // shutdown" exceptions

    // super.onStop() 
  }
}