简单scalatra测试规范2示例引发异常

简单scalatra测试规范2示例引发异常,scala,scalatra,specs2,Scala,Scalatra,Specs2,当从以下位置运行scalatra specs2示例时,我遇到此异常: 以下是测试代码(从第5行开始,跳过导入): 以下是应用程序定义: class MyApp extends ScalatraServlet { get("/") { "aloha" } } 我使用的是scalatra-specs2 2.0.4和scala 2.9.1。我使用xsbt web插件0.2.10和sbt 0.11.2运行嵌入式jetty服务器。使用sbt测试执行测试 以下是完整的跟踪: [info]

当从以下位置运行scalatra specs2示例时,我遇到此异常:

以下是测试代码(从第5行开始,跳过导入):

以下是应用程序定义:

class MyApp extends ScalatraServlet {

  get("/") {
    "aloha"
  }
}
我使用的是scalatra-specs2 2.0.4和scala 2.9.1。我使用xsbt web插件0.2.10和sbt 0.11.2运行嵌入式jetty服务器。使用
sbt测试执行测试

以下是完整的跟踪:

[info] GET / on AdminApp should
[error] ! Fragment evaluation error
[error]     ThrowableException: org.eclipse.jetty.http.HttpGenerator.flushBuffer()I (FutureTask.java:138)
[error] org.eclipse.jetty.testing.HttpTester.generate(HttpTester.java:225)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:46)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:71)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.get(ScalatraTests.scala:127)
[error] com.example.MyAppTest.get(MyAppTest.scala:5)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] org.eclipse.jetty.http.HttpGenerator.flushBuffer()I
[error] org.eclipse.jetty.testing.HttpTester.generate(HttpTester.java:225)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:46)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:71)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.get(ScalatraTests.scala:127)
[error] com.example.MyAppTest.get(MyAppTest.scala:5)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
这是迄今为止出现的唯一搜索结果:

有人能给我指出正确的方向吗

谢谢,
-f

您的依赖关系可能存在冲突,更具体地说,是与Jetty库版本冲突。由于
HttpGenerator
上的“flush”方法在Jetty 6和Jetty 7之间发生了更改,您可能会得到一个“NoSuchMethodFoundError”,它解释了异常消息中奇怪的“org.eclipse.Jetty.http.HttpGenerator.flushBuffer()I”签名

这也解释了为什么会出现“片段评估错误”,而不是像您提到的链接中所解释的那样出现常规故障


如果您尝试使用最新的specs2-1.10-SNAPSHOT,您将得到一条更好的消息,显示“fragment evaluation error”,在出现这种情况时显示“NoSuchMethodError”。这将帮助您更快地诊断问题。

仍然不确定根本原因,但将jetty webapp从8.0.3.v20111011回滚到7.6.0.v20120127后,测试成功执行。

我不确定,但是否您没有使用正确的jetty库?我注意到,jetty 6和jetty 7之间的“冲洗”方法发生了变化。这可能会导致“MethodNotFound错误”,这将解释异常消息中奇怪的“org.eclipse.jetty.http.HttpGenerator.flushBuffer()I”签名。这也解释了为什么这是你提到的链接中解释的“碎片评估错误”。如果你尝试一下最新的specs2-1.10-SNAPSHOT,你应该会得到一个更好的“碎片评估错误”消息,在出现这种情况时显示“NoSuchMethodError”。我只是将我的评论转换为常规答案。我希望这是对的:-)谢谢,埃里克。那是码头图书馆。我尝试了specs2的1.10快照,但它没有显示“NoSuchMethodError”,但在将jetty webapp从8.0.3.v20111011回滚到7.6.0.V20127后,测试工作正常。谢谢你的帮助!请通过提出更好的问题来帮助更好地回答问题:
class MyApp extends ScalatraServlet {

  get("/") {
    "aloha"
  }
}
[info] GET / on AdminApp should
[error] ! Fragment evaluation error
[error]     ThrowableException: org.eclipse.jetty.http.HttpGenerator.flushBuffer()I (FutureTask.java:138)
[error] org.eclipse.jetty.testing.HttpTester.generate(HttpTester.java:225)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:46)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:71)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.get(ScalatraTests.scala:127)
[error] com.example.MyAppTest.get(MyAppTest.scala:5)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] org.eclipse.jetty.http.HttpGenerator.flushBuffer()I
[error] org.eclipse.jetty.testing.HttpTester.generate(HttpTester.java:225)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:46)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.submit(ScalatraTests.scala:71)
[error] com.example.MyAppTest.submit(MyAppTest.scala:5)
[error] org.scalatra.test.ScalatraTests$class.get(ScalatraTests.scala:127)
[error] com.example.MyAppTest.get(MyAppTest.scala:5)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)
[error] com.example.MyAppTest$$anonfun$1$$anonfun$apply$3.apply(MyAppTest.scala:10)