Frage

Ich versuche, die Probe-Tests auszuführen, die mit junit4.7 kommen und einige Schwierigkeiten haben.

java respektiert meinen CLASSPATH:

me@dinosaurhunter ~/Desktop> export CLASSPATH=
me@dinosaurhunter ~/Desktop> echo $CLASSPATH

me@dinosaurhunter ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner
me@dinosaurhunter ~/Desktop> source /etc/profile 
me@dinosaurhunter ~/Desktop> echo $CLASSPATH
:/Library/Java/Extensions/junit/:/Library/Java/Extensions/junit/junit.jar
me@dinosaurhunter ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests
Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/Test
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:164)
    at junit.runner.BaseTestRunner.loadSuiteClass(BaseTestRunner.java:207)
    at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:100)
    at junit.textui.TestRunner.start(TestRunner.java:179)
    at junit.textui.TestRunner.main(TestRunner.java:138)

aber wie Sie sehen können, ist es nicht in der Lage junit/framework/Test zu finden ... Ich schaute in dem /Library/Java/Extensions/junit/junit.jar und es enthalten ist, though.

/Library/Java/Extensions/junit/junit.jar ist ein symbolischer Link. Ist das in Ordnung?

War es hilfreich?

Lösung

Versuchen Sie, die JUnit-JAR-Datei direkt in das Verzeichnis Extensions statt der Schaffung ein Unterverzeichnis für sie setzen. Ich kopiere nur die junit-4.6.jar in / Library / Java / Extenstions Verzeichnis und ausgeführt, um die Testrunner Klasse ohne Probleme

% java junit.textui.TestRunner
Usage: TestRunner [-wait] testCaseName, where name is the name of the TestCase class

Löschen der Bibliothek aus dem Verzeichnis Extensions Ergebnisse in der erwarteten Ausnahme

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner

Andere Tipps

Ok, Ich habe gerade heruntergeladen JUnit 4.7, entpackt die Zip-Datei, geändert Verzeichnis in den Ordner und lief der folgende Befehl erfolgreich:

$ java -cp .:junit-4.7.jar junit.textui.TestRunner junit.samples.AllTests 
.........................................
.........................................
.........................................
.......
Time: 3.255

OK (130 tests)

Das war auf OSX.

Ich denke, in Ihrem Beispiel Classpath ist ein wenig durcheinander. Versuchen Sie folgendes:

.:/Library/Java/Extensions/junit:/Library/Java/Extensions/junit/junit.jar

die Unterschiede sehen? Ich fügte hinzu, das . (aktuelles Verzeichnis) und ich entfernte den Schrägstrich aus dem JUnit-Verzeichnis.

UPDATE: Ich habe mit einem Symlink getestet und das scheint zu funktionieren:

$ ln -s junit-4.7.jar junit.jar
$ java -cp .:junit.jar junit.textui.TestRunner junit.samples.AllTests 
.........................................
.........................................
.........................................
.......
Time: 2.569

OK (130 tests)

Haben Sie bauen die JAR selbst? Das sieht aus wie die JAR ohne Anmerkung gebaut wird.

Wenn Sie die JUnit kompilieren mit

  javac -proc none ...

Sie werden diese Fehler erhalten.

Einige Dinge zu untersuchen:

Ist die junit.jar Datei in dem von Ihnen angegebenen Speicherort, und ist es lesbar? Ist CLASSPATH von / etc / profile exportiert? Funktioniert es, wenn Sie „-cp $ CLASSPATH“ statt auf der Kommandozeile gesetzt? Versuchen Sie, den führenden Doppelpunkt in der Classpath zu entfernen -. Sollte nicht da sein

Es ist möglich, dass ein Symlink mit Ihrem Problem verursacht. Der Versuch, das Glas hinzufügen, die zu Symlink zeigt, und versuchen Sie es erneut.

suchen jedoch auf java-man-Seite für mac os x es scheint nicht eine solche Beschränkung zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top