2013-06-15 6 views
8

Ich versuche, Tests in einer intellij für eine sbt-basierte Scala-Anwendung auszuführen. Aber ich bekomme die folgende Fehlermeldung, die ich bin nicht sicher, wie sie zu beheben:Intellij wird ScalaTests nicht ausführen - "Inkompatibler Klassenänderungsfehler"

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) 

Wenn ich meine Klassen mit dem JUnit runner Attribut schmücken sie funktionieren gut (und es ist eigentlich eine viel bessere Sicht in Bezug auf die Optik) :

@RunWith(classOf[JUnitRunner]) 
+0

Haben Sie versucht 'sbt clean && sbt gen-idea', efeu cache löschen, Intellij usw. neu starten? – samthebest

+0

Wenn Sie "sbt test" ausführen funktioniert es? – Daenyth

Antwort

0

Dies scheint ein Problem mit Scala Test Runner Framework zu sein. Ich war auf dasselbe Problem gestoßen. schließlich wie Sie vorgeschlagen am Ende mit Junit Test Runner, damit es funktioniert. Aber in meinem Fall war das Problem eine transitive Abhängigkeit und kein solcher Klassenfehler.

1

Stellen Sie sicher, dass die Bibliotheken, die Sie für den JUnitRunner verwenden, identisch sind. Die meisten Male "Inkompatible Class Change Error" tritt wegen der Abwärtskompatibilität auf. Werfen Sie auch einen Blick auf Scala-Bibliothek jar zum Zeitpunkt der Kompilierung und Ausführung.

1

Ich habe den gleichen Fehler beim Versuch, Tests für meine Play Framework App auszuführen. Als ich mich in den Stack-Trace vertiefte, stellte ich fest, dass die Problemklasse FakeRequest war, die sich in der Spiel-Test-Bibliothek befindet. Ich hatte zwei verschiedene Versionen der Bibliothek, eine für Play 2.4 und eine für 2.3. Ich konnte dieses Problem lösen, indem ich die Play-Test-Version für Play 2.3 entfernte (Öffnen Sie Module Settings -> Libraries -> suchen und löschen Sie die schlechte Abhängigkeit).

Ihr Problem ist wahrscheinlich mit einigen anderen problematischen Abhängigkeit, aber die gleichen Schritte wie oben können helfen, es zu beheben.

Verwandte Themen