2012-09-21 4 views
5

Ich nehme die Martin Odersky Coursera Klasse und die Aufgaben verwenden ScalaTest. Es ist ziemlich ärgerlich, dass Eclipse die Testmethoden nicht mit Doppelklick oder Rechtsklick auf "Gehe zu Datei" im JUnit Runner finden kann.Eclipse JUnit Runner kann ScalaTest Methoden nicht auf Doppelklick finden

Nach Doppelklick wurde eine "Methode 'xxx' nicht gefunden. Öffnen der Testklasse." Der Dialog erscheint.

Gibt es ein Konfigurationsproblem oder ist dies ein ScalaTest Bug/Einschränkung?

Hier ist eine Probe ScalaTest aus der Klasse:

package recfun 

import org.scalatest.FunSuite 

import org.junit.runner.RunWith 
import org.scalatest.junit.JUnitRunner 

@RunWith(classOf[JUnitRunner]) 
class CountChangeSuite extends FunSuite { 
    import Main.countChange 
    test("manual") { 
    assert(countChange(4,List(1,2)) === 3) 
    } 
} 

Antwort

2

Sie können das ScalaTest Eclipse-Plugin mit ScalaTest 1.8 verwenden. Aber wenn Sie Ihre Tests ausführen, wird eine GUI angezeigt. Nützlich, aber nicht so schön wie die ScalaTest 2.0-Integration. Ich denke, mit dem Kurs Coursera verwenden Sie 1.8.

Das eigentliche Problem, das Sie mit JUnit haben, haben wir in ScalaTest versucht zu lösen. JUnit ist nicht nur ein Testframework, sondern auch eine Testplattform, mit der Sie andere Frameworks über die @RunWith-Annotation ausführen können. In diesem Fall führen Sie ScalaTest über JUnit aus. Aber Sie erhalten nicht die volle IDE-Unterstützung mit einer @RunWith-Annotation, Sie erhalten nur die Möglichkeit zur Ausführung. Dies ist in der Tat eine Einschränkung von JUnit. Was Sie möchten, ist IDE-Unterstützung auch für das Testframework, das Sie durch JUnit laufen (in diesem Fall ScalaTest). Die einzige Möglichkeit, dies mit JUnit zu tun, ist das Schreiben von IDE-Plugins für Ihr Testframework, was eine Menge Arbeit bedeutet.

Wir haben daran als Teil des ScalaTest-Projekts gearbeitet, indem wir Plugins erstellt oder Plugins erstellt haben, die ScalaTest-Benutzern volle IDE-Unterstützung bieten. Aber im Rahmen dieser Bemühungen haben wir auch das Konzept eines "Finders" entwickelt, mit dem andere Test-Frameworks volle IDE-Unterstützung erhalten, wenn sie durch ScalaTest laufen. (Genau wie Sie andere Test-Frameworks über JUnit ausführen können, können Sie auch andere Test-Frameworks über ScalaTest ausführen.) Einige Beispiele von Finders, die IDE-Unterstützung am Ende dieses Videos geben (ca. 10 Minuten in das Video):

http://skillsmatter.com/podcast/scala/scalatest-scalamock-subcut

+0

Vielen Dank für die klare Erklärung und die Arbeit, Scala Tooling zu fördern! Wenn jetzt nur jemand [Android/Eclipse/Scala zusammen spielen könnte] (http://stackoverflow.com/q/8113250/403455) ... –

3

Ja, es ist ein bekannter Fehler in der JUnit-Plugin für Eclipse. Es ist auch sehr schwer zu lösen (für das jun it-Plugin).

Grundsätzlich erwartet das Eclipse junit Plugin, dass es eine Methode gibt, die es für alle Java JUnit Tests geben wird, aber dies ist nicht unbedingt der Fall für ScalaTest Tests, insbesondere Suites & Specs.

Sie können jedoch die Scalatest plugin for Eclipse ausprobieren, die funktionieren sollte.

+0

Ich mag, dass Sie versuchen, den Schwarzen Peter an die Junit Plugin passieren :). Wie ist es ein Junit Runner Bug im Gegensatz zu einer ScalaTest Begrenzung? –

+0

Da, worauf Sie klicken, ist das JUnit-Plugin, nicht Scalatest. –

+0

Wie könnte der JUnit Runner möglicherweise Scala Hacking unterstützen? Auf der anderen Seite, warum sollte ScalaTest sich darum kümmern, den JUnit Runner von Eclipse zu unterstützen?Ich nehme an, dass ScalaTest sich sehr bemüht hat, mit Junit-Läufern kompatibel zu sein? Übrigens habe ich gerade das ScalaTest Eclipse Plugin installiert, +1 und akzeptiert :) –

0

Dies funktioniert für mich:

1- eine Konsole in Ihrem Ordner Projekt öffnen und ausführen "sbt".

2- (ohne raus aus "sbt") ausführen "Eclipse" -Befehl.

enter image description here

Verwandte Themen