这是我测试的源代码:
import org.openqa.selenium.firefox.FirefoxDriver
import org.scalatest.FlatSpec
import org.scalatest.Matchers
import play.api.test.FakeApplication
import play.api.test.WithApplication
class FunctionalSpec extends FlatSpec with Matchers {
def withDriver(f: FirefoxDriver => Unit) = {
val driver = new FirefoxDriver
try {
new WithApplication(
new FakeApplication(additionalConfiguration = Map("application.secret" -> "secret"))) {
f(driver)
}
} finally {
driver.quit
}
}
}
它不会在Eclipse中显示任何编译错误。但是当我执行test
命令时,它会显示a very long error message。这是错误的第一行:
test.FunctionalSpec中不存在符号值f $ 1. $ anon $ 1 $ delayedInit $ body.apply
我尝试通过修改代码来玩一下,如下所示:
def withDriver(f: FirefoxDriver => Unit) = {
val driver = new FirefoxDriver
try {
val g = f
val driver2 = driver
new WithApplication(
new FakeApplication(additionalConfiguration = Map("application.secret" -> "secret"))) {
val h = g
val driver3 = driver2
h(driver3)
}
} finally {
driver.quit
}
}
执行test
命令时没有抛出任何错误。知道发生了什么事吗?为了保持标识符的识别,代码块的深度是否有限制?
编辑: 使用我上面修改过的代码会产生runtime-error。我添加了以下代码:
"The admin" should "be able to login and logout correctly" in withDriver { implicit driver =>
// Don't do anything yet.
}
这一行显示在运行时错误消息的一行中:
原因:java.lang.NoSuchFieldError:g $ 1
有关解决方法的任何建议吗?
附加说明:
上面的所有代码都编译得很好。 Eclipse或scalac
都没有抱怨。只有当我从Play命令shell执行test
命令时,才会发生上述所有错误。
答案 0 :(得分:-1)
这不能直接回答你的问题,但我会做两件事: