scala – 如何在Play 2.0.1中使用TestServer运行多个功能规范?
发布时间:2020-12-16 18:43:38 所属栏目:安全 来源:网络整理
导读:我在运行多个功能规范时遇到问题(使用specs2),特别是启动TestServer的测试,打开 HTMLUNIT浏览器,然后导航到页面以检查元素.有问题的页面会加载我们在ajax请求上测试的元素.等待元素出现超时,并显示以下错误消息. 代码段: trait CommonSteps extends BaseSpe
我在运行多个功能规范时遇到问题(使用specs2),特别是启动TestServer的测试,打开
HTMLUNIT浏览器,然后导航到页面以检查元素.有问题的页面会加载我们在ajax请求上测试的元素.等待元素出现超时,并显示以下错误消息.
代码段: trait CommonSteps extends BaseSpecfication { val testServer: TestServer = TestServer(3333) val testServerBaseURL: String = "http://localhost:3333/" override def map(fs: => Fragments) = Step(testServer.start()) ^ super.map(fs) ^ Step(testServer.stop()) } class FunctionalTest1 extends Specification with CommonSteps { def is = ... ... extends When[...] { val browser: TestBrowser = TestBrowser.of(HTMLUNIT) browser.goTo(testServerBaseURL + "/some_path") browser } ... extends Then[...] { browser.await.until("element that is loaded on ajax request").isPresent() ... } } 我们得到错误: Caused by: 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:1479) com.jolbox.bonecp.BoneCP.captureStackTrace(BoneCP.java:543) com.jolbox.bonecp.BoneCP.shutdown(BoneCP.java:159) com.jolbox.bonecp.BoneCPDataSource.close(BoneCPDataSource.java:123) play.api.db.BoneCPApi.shutdownPool(DB.scala:387) play.api.db.BoneCPPlugin$$anonfun$onStop$1.apply(DB.scala:252) play.api.db.BoneCPPlugin$$anonfun$onStop$1.apply(DB.scala:250) scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) scala.collection.immutable.List.foreach(List.scala:45) play.api.db.BoneCPPlugin.onStop(DB.scala:250) play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:75) play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:74) scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) scala.collection.immutable.List.foreach(List.scala:45) play.api.Play$$anonfun$stop$1.apply(Play.scala:74) play.api.Play$$anonfun$stop$1.apply(Play.scala:74) scala.Option.map(Option.scala:133) play.api.Play$.stop(Play.scala:73) play.core.server.NettyServer.stop(NettyServer.scala:73) 虽然测试在隔离运行时有效,但是当它们中的两个或多个一起运行时会出现错误. 它似乎与this issue有关,虽然我的例子是Scala Play应用程序.任何人都可以确认此问题已在较新版本的Play中修复吗?或者,是否有一种解决方法可以避免在Play 2.0.1中出现此错误. 解决方法
此问题将在Play 2.0.2中修复,该目前处于RC状态.从2.0.1升级到2.0.2是安全的,因为所有内容都是向后兼容的.
感谢@ guillaume-bort提供此信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |