【问题标题】:Play! Integration tests hang using WithBrowser玩!使用 WithBrowser 挂起集成测试
【发布时间】:2013-08-23 22:34:52
【问题描述】:

在尝试运行集成测试时,我遇到了一个莫名其妙的问题,即 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")

    }

  }

}

【问题讨论】:

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


    【解决方案1】:

    您是否尝试过设置一个端口(例如 3333)然后使用您的本地主机?

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

    【讨论】:

    • 不是 URL 或端口。如果我在 browser.goTo("/test") 那里 /test 输出一个不需要数据库的简单视图,那么一切正常。否则,它会挂起。
    【解决方案2】:

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

    我通过设置 (Build.scala) 解决了这个问题: .settings(测试中的并行执行:= false)

    它帮助我处理了 FakeRequest,但硒测试仍然挂起。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-05
        • 2017-08-01
        • 2018-07-28
        • 1970-01-01
        • 1970-01-01
        • 2021-06-01
        • 2014-04-15
        • 2013-04-12
        相关资源
        最近更新 更多