玩!使用WithBrowser挂起集成测试

时间:2013-08-21 13:55:49

标签: scala playframework playframework-2.0 integration-testing playframework-2.1

当尝试运行集成测试时,我遇到了一个令人困惑的问题,即JVM将使用100%的CPU挂起。新的Play应用程序附带的测试可以正常工作,但只要它需要数据库交互,它就会无限期挂起。对于所有其他单元测试,一切都可以顺利连接到localhost上的mysql数据库。我希望能够在集成测试中使用相同的设置。

以下是调用browser.goTo(“/”)

时将挂起的测试示例
import org.specs2.mutable._

import play.api.test._
import play.api.test.Helpers._

class TestSpec extends Specification {

  "Application" should {

    "work from within a browser" in new WithBrowser(webDriver = HTMLUNIT, app = FakeApplication()) {

      browser.goTo("/")

      println(browser.pageSource)

      browser.$("#email").text("test@fakeemail.com")
      browser.$("#password").text("password")
      browser.$("#loginbutton").click()
      browser.pageSource must not contain("Sign in")
      browser.pageSource must contain("Logout")

    }

  }

}

3 个答案:

答案 0 :(得分:4)

我的案例中的问题是硒版本。将此行添加到Build.scala中的appDependencies将升级selenium:

"org.seleniumhq.selenium" % "selenium-java" % "2.35.0" % "test"

从那里我可以将HTMLUNIT和FIREFOX用于网络驱动程序而没有任何问题。

答案 1 :(得分:0)

您是否尝试过设置3333这样的端口,然后使用localhost?

browser.goTo("http://localhost:3333/")

答案 2 :(得分:0)

你解决了这个问题吗?我有同样的问题,如果有任何数据库连接,它也会挂起简单的路由(FakeRequest)。

我通过设置(Build.scala)解决了这个问题: .settings(test中的parallelExecution:= false)

它帮助我完成了FakeRequest,但是硒测试仍然存在。