当尝试运行集成测试时,我遇到了一个令人困惑的问题,即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")
}
}
}
答案 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,但是硒测试仍然存在。