2013-06-15 9 views
8

intellijでsbtベースのScalaアプリケーションのテストを実行しようとしています。しかし、私は私が解決するかどうかはわかりません、次のエラーを取得:IntellijはScalaTestsを実行しません - 「互換性のないクラス変更エラー」

Testing started at 21:07 ... 
java.lang.IncompatibleClassChangeError: Found class scala.collection.mutable.ArrayOps, but interface was expected 
    at org.scalatest.tools.Runner$.checkArgsForValidity(Runner.scala:895) 
    at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:729) 
    at org.scalatest.tools.Runner$.run(Runner.scala:711) 
    at org.scalatest.tools.Runner.run(Runner.scala) 
    at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:144) 
    at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:35) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

私は、彼らが働くJUnitのランナー属性で私のクラスを飾る罰金(と、それは実際にビジュアルの面ではるかに優れた走行です) :

@RunWith(classOf[JUnitRunner]) 
+0

アイビーキャッシュを削除してIntellijを再起動するなど、 'sbt clean && sbt gen-idea'を試しましたか? – samthebest

+0

'sbt test'を実行するとうまくいきますか? – Daenyth

答えて

0

これはscala test runner frameworkに問題があるようです。私は同じ問題を抱えていた。最終的にはjunitテストランナーを使って動作させるように提案したようです。しかし、私の場合の問題は、推移的な依存関係を引き寄せていて、そのようなクラスエラーがないということでした。

1

JUnitRunnerで使用するライブラリが同じであることを確認してください。 「互換性のないクラス変更エラー」のほとんどは、下位互換性のために発生します。また、コンパイルと実行時にスカラライブラリジャーを見てください。

1

Play Frameworkアプリのテストを実行しようとしたときに同じエラーが発生しました。スタックトレースをドリルダウンすると、問題クラスがFakeRequestであることがわかりました.FakeRequestは、プレイテストライブラリにあります。私はライブラリの2つの異なるバージョンを持っていました.1つはPlay 2.4用、もう1つは2.3用でした。 Play 2.3のプレイテスト版を削除して(モジュール設定 - >ライブラリ - >悪い依存関係を見つけて削除する)、この問題を解決できました。

問題はおそらく他の問題のある依存関係がありますが、上記と同じ手順を実行することで解決できます。

関連する問題