2013-06-15 9 views
8

Próbuję uruchomić testy dla aplikacji Scala opartej na sbt w intellij. Ale pojawia się następujący komunikat o błędzie, który nie jestem pewien jak to naprawić:Intellij nie uruchomi ScalaTests - "Niezgodny błąd zmiany klasy"

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) 

Kiedy ozdobić moje zajęcia z atrybutem Junit płozy one działać dobrze (i to jest rzeczywiście znacznie lepiej prowadzony pod względem wizualizacje) :

@RunWith(classOf[JUnitRunner]) 
+0

Czy próbowałeś 'sbt clean && sbt gen-idea', usuwając pamięć podręczną bluszczu, restartując Intellij itp? – samthebest

+0

Po uruchomieniu 'test sbt' działa? – Daenyth

Odpowiedz

0

To wydaje się być problemem z ramką testową programu scala. Znalazłem ten sam problem; w końcu, jak sugerujesz, kończy się używanie junit test runner, aby to zadziałało. Ale problem w moim przypadku polegał na tym, że wciągał przejściową zależność i nie występował taki błąd klasy.

1

Upewnij się, że biblioteki, których używasz dla JUnitRunner są takie same. Najczęściej występuje "Niezgodny błąd zmiany klasy" z powodu kompatybilności wstecznej. A także spójrz na słoik biblioteki scala w czasie kompilowania i uruchamiania.

1

Ten sam błąd wystąpił podczas próby uruchomienia testów dla mojej aplikacji Play Framework. Przechodząc do śledzenia stosu, stwierdziłem, że klasa problemu to FakeRequest, która znajduje się w bibliotece testów odtwarzania. Miałem dwie różne wersje biblioteki, jedną dla Play 2.4 i jedną dla wersji 2.3. Udało mi się rozwiązać ten problem, usuwając wersję testową gry Play 2.3 (otwórz Ustawienia modułu -> Biblioteki -> znajdź i usuń złą zależność).

Twój problem jest prawdopodobnie związany z inną problematyczną zależnością, ale wykonanie tych samych czynności co powyżej może pomóc w naprawieniu tego problemu.