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")

    }

  }

}
4

3 回答 3

4

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

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

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

于 2013-09-04T01:01:20.027 回答
0

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

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

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

于 2013-08-26T07:56:37.727 回答
0

您是否尝试过设置一个诸如 3333 之类的端口,然后使用您的本地主机?

browser.goTo("http://localhost:3333/")
于 2013-08-22T15:04:15.003 回答