Production에서 사용 된 것과 동일한 데이터베이스 설정을 사용하여 Play 2 Scala 앱에 대한 단위 테스트를 실행하고 싶습니다. 다음은 "java.sql.SQLException : 이미 종료 된 풀에서 연결을 얻으려고 시도합니다."와 함께 실패합니다. 2 차 시험에서.) 난 그냥 BogusTest이Play 2.1 Slick과 Postgres로 단위 테스트
2를 실행하도록 요청에도 불구하고,
1) 모든 테스트를 실행합니다
$ play -Dconfig.file=`pwd`/conf/dev.conf "test-only controllers.BogusTest"
다른 두 신비 :
package controllers
import org.specs2.mutable._
import play.api.db.DB
import play.api.Play.current
import play.api.test._
import play.api.test.Helpers._
import scala.slick.driver.PostgresDriver.simple._
class BogusTest extends Specification {
def postgresDatabase(name: String = "default",
options: Map[String, String] = Map.empty): Map[String, String] =
Map(
"db.test.driver" -> "org.postgresql.Driver",
"db.test.user" -> "postgres",
"db.test.password" -> "blah",
"db.test.url" -> "jdbc:postgresql://localhost/blah"
)
def fakeApp[T](block: => T): T =
running(FakeApplication(additionalConfiguration =
postgresDatabase("test") ++ Map("evolutionplugin" -> "disabled"))) {
def database = Database.forDataSource(DB.getDataSource("test"))
database.withSession { implicit s: Session => block }
}
"Fire 1" should {
"do something" in fakeApp {
success
}
}
"Fire 2" should {
"do something else" in fakeApp {
success
}
}
}
는이 같은 테스트를 실행 application.conf는 def.conf가 아니라 항상 사용되며 드라이버 정보는 코드에 구성된 정보가 아니라 application.conf에서 제공됩니다.
을 지정하는 방법에 대한 정보는 http://stackoverflow.com/questions/15399161/how-do-i-specify-a-config-file-with-sbt-0-12-2-for-sbt-test를 참조하십시오. 'config '로 다른 설정 파일. –
감사합니다. 신비 2를 처리해야합니다. 주된 문제에 대해서도 밝힐 수 있습니까? –
나는 똑같은 문제를 겪고있다. specs2에서 Around 특성을 사용하지 않고 단순히 in {running (fakeApp) {Database.forDataSource (DB.getDataSource()) withSession {}}} '내에 래핑하면이 예외도 발생합니다. – Meredith