2012-05-10 9 views
2

をスローscalatra docsからscalatra specs2例を実行しているとき、私はこの例外を取得しています:シンプルscalatraテストspecs2例は例外

:ここ

ThrowableException: org.eclipse.jetty.http.HttpGenerator.flushBuffer()I (FutureTask.java:138) 

は、テストコード(輸入をスキップし、5行目から始まる)ですここで

class MyAppTest extends MutableScalatraSpec { 
    addServlet(classOf[MyApp], "/*") 

    "GET/on AdminApp" should { 
    "return status 200" in { 
     get("/") { 
     status must_== 200 
     } 
    } 
    } 
} 

アプリの定義である:

class MyApp extends ScalatraServlet { 

    get("/") { 
    "aloha" 
    } 
} 

私はscalatra-を使用していますspecs2 2.0.4およびscala 2.9.1。私は、xsbt-web-plugin 0.2.10とsbt 0.11.2を使って埋め込まれたjettyサーバーを実行しています。テストはsbt testを使用して実行されました。 Fragment Evaluation Error

[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

+0

わかりませんが、適切なJettyライブラリを使用していない可能性がありますか? jetty 6とjetty 7の間で "flush"メソッドが変更されていることに気付きました。これは、 "メソッドが見つかりません"という奇妙な "org.eclipse.jetty.http.HttpGenerator.flushBuffer()I"シグネチャを説明するエラーを引き起こす可能性があります。例外メッセージこれはまた、あなたが言及したリンクで説明されているように、なぜこれが「フラグメント評価エラー」であるのかを説明します。 – Eric

+0

最新のspecs2-1.10-SNAPSHOTを公開した場合、「NoSuchMethodError」を示す「フラグメント評価エラー」のメッセージが表示されます。 – Eric

+0

私はちょうど私のコメントを通常の答えに変えました。私はそれが正しいことを願っています:-) – Eric

答えて

0

あなたはおそらく、あなたの依存関係の紛争、より具体的で桟橋ライブラリのバージョンを持っています。 HttpGeneratorの "flush"メソッドがJetty 6とJetty 7の間で変更されているため、例外メッセージの奇妙な "org.eclipse.jetty.http.HttpGenerator.flushBuffer()I"シグネチャを説明する "NoSuchMethodFoundError" 。

これはまた、あなたが言及したリンクで説明されているように、「フラグメント評価エラー」が発生し、通常の失敗ではない理由を説明します。

最新のspecs2-1.10-SNAPSHOTを公開すると、「NoSuchMethodError」を示す「フラグメント評価エラー」のメッセージが表示されます。これにより、問題の迅速な診断に役立ちます。

+0

それは桟橋の図書館でした。 – fayvor

1

根本原因は不明ですが、8.0.3.v20111011から7.6.0.v20120127に戻ってjetty-webappをロールバックしてもテストは正常に実行されます。

+0

より良い質問をすることで、質問へのより良い対応を助けてください:http://stackoverflow.com/questions/how-to-ask –