it-swarm.com.de

Eclipse-JUnit - Mögliche Ursachen für "InitializationError" im Eclipse-Fenster

Ich weiß, dass diese Frage ziemlich allgemein ist, aber ich habe keine Hinweise gefunden, warum dieser Fehler angezeigt werden kann. Was sind mögliche Ursachen für initalizationError im Eclipse-Fenster? Ich bekomme keine nützlichen Informationen, nur eine lange und unbrauchbare Ausfallspur (hier nicht enthalten). 

Ich verwende JUnit 4.11

Ich habe den folgenden Code geschrieben - nur um zu sehen, ob es funktioniert:

package test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class SimpleTest {

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Test
public void test() {
    assertEquals(15, 15);
}

}

Edit: Sorry In Eclipse-Fenster heißt es eigentlich eine "Fehlerverfolgung":

Java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing     at
Java.lang.ClassLoader.defineClass1(Native Method)   at
Java.lang.ClassLoader.defineClass(Unknown Source)   at
Java.security.SecureClassLoader.defineClass(Unknown Source)     at
Java.net.URLClassLoader.defineClass(Unknown Source)     at
Java.net.URLClassLoader.access$100(Unknown Source)  at
Java.net.URLClassLoader$1.run(Unknown Source)   at
Java.net.URLClassLoader$1.run(Unknown Source)   at
Java.security.AccessController.doPrivileged(Native Method)  at
Java.net.URLClassLoader.findClass(Unknown Source)   at
Java.lang.ClassLoader.loadClass(Unknown Source)     at
Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)  at
Java.lang.ClassLoader.loadClass(Unknown Source)     at
org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.Java:10)
    at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.Java:59)
    at 
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.Java:26)
    at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.Java:59)
    at
org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.Java:26)
    at
org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.Java:33)
    at
org.Eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.Java:25)
    at
org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.Java:48)
    at
org.Eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.Java:38)
    at
org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:452)
    at
org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.Java:683)
    at
org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.Java:390)
    at
org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.Java:197)
Caused by: Java.lang.ClassNotFoundException:
org.hamcrest.SelfDescribing     at Java.net.URLClassLoader$1.run(Unknown
Source)     at Java.net.URLClassLoader$1.run(Unknown Source)    at
Java.security.AccessController.doPrivileged(Native Method)  at
Java.net.URLClassLoader.findClass(Unknown Source)   at
Java.lang.ClassLoader.loadClass(Unknown Source)     at
Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)  at
Java.lang.ClassLoader.loadClass(Unknown Source)     ... 25 more
47
lixonn

Sie haben wahrscheinlich eines von zwei Problemen:

1) Sie verwenden JUnit 4.11, zu dem Hamcrest nicht gehört. Fügen Sie die Bibliothek hamcrest 1.3 Ihrem Klassenpfad hinzu.

2) Sie haben hamcrest 1.3 auf Ihrem Klassenpfad, aber Sie haben eine andere Version von junit oder hamcrest auf Ihrem Klassenpfad.

Für den Hintergrund enthielt junit vor 4.11 eine reduzierte Version von hamcrest 1.1. 4.11 hat diese Klassen entfernt.

43
Matthew Farwell

Für mich war das ein dummer Fehler. Ich habe den Test versehentlich als private anstelle von public eingestellt:

@Test
private void thisTestWasCausingProblems() {
...
}

es hätte sein sollen

@Test
public void thisTestIsOK() {
...
}
36
JACH

Probiere einfach "Projekt> Reinigen ..." - scheint die Lösung für viele Probleme in Eclipse zu sein!

18
Henrik Schulze

Für mich war es ein fehlendes static-Schlüsselwort in einer der mit JUnit annotierten Methoden, z.

@AfterClass
public static void cleanUp() {
    // ...
}
8
friederbluemle

Ich habe diese Fehlermeldung erhalten, als die Klasse mit @Ignore kommentiert wurde, und ich habe versucht, einen bestimmten Test durch Klicken mit der rechten Maustaste auszuführen. Das Entfernen des @Ignore beseitigte das Problem.

5
Luke

Ich habe genau den gleichen Fehler ausprobiert. Mein Problem war, dass die von mir erstellte SetUp-Methode als statisch deklariert wurde. 

Wenn Sie Eclipse verwenden, können Sie eine gute Beschreibung erhalten, indem Sie auf den Fehler klicken und dann das Fehlerverfolgungsfenster überprüfen.

4
pablo.vix

Stellen Sie außerdem sicher, dass alle @Before-, @After- und was auch immer JUnit-annotierten Methoden als public deklariert sind. Ich hatte meine als private deklariert, was das Problem verursacht hat.

3

Dieses Problem tritt auch auf, wenn Sie eine private Regel in Ihrer Klasse haben:

@Rule
private TemporaryFolder folderRule;

Machen Sie es öffentlich.

2
T3rm1

Für mich hatte das etwas mit Commons-Logging zu tun. Seit ich benutze

@RunWith(SpringJUnit4ClassRunner.class)

Dies hat mein Problem gelöst

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
1
Anand Rockzz

Mein Fehler war, dass ich die @ Test-Anmerkung zur Testmethode verpasst habe.

1
user55926

Für mich lag es am "Rückgabetyp" der Testmethode. Es sollte "nichtig" sein

1
Karthik Murugan

Ich hatte gerade das gleiche Problem und die gleiche Nachricht. Ich konnte das Problem beheben, indem ich das hamcrest-all-1.3.jar-Archiv in den Java Building Path importierte. Ich verwende eine JUnit 4.12-Version.

1
JuanJoRoman

Ich hatte das gleiche Problem: Einmal gab es ein Problem mit dem Excel-Pfad und ein anderes Mal fehlte die @Test-Annotation.

1
yogendra

Mein Problem war, dass meine Elternklasse keine @Test-Methoden hatte. Ich habe dort nur einige Hilfsmittel verwendet. Wenn ich es als abstract deklariert habe, funktioniert es. 

1
unrein

In meinem Fall hatte ich in meinem Testfall folgenden Import:

import org.junit.jupiter.api.Test;

Der richtige Import ist:

import org.junit.Test;

Importieren Sie nicht nur einen alten Testtyp von junit, sondern stellen Sie sicher, dass Sie den richtigen auswählen.

0
sgf

Wenn Sie die Sprache xtend (oder eine andere JVM-Sprache mit Typinferenz) verwenden und den Rückgabetyp nicht explizit definiert haben, wird er möglicherweise aufgrund des letzten Ausdrucks auf einen nicht-ungültigen Typ gesetzt.

0
Aykut Kllic

Ich habe eine weitere Fehlerspur erhalten, aber für zukünftige Besucher, die ihre bevorzugte Suchmaschine verwenden:

Für mich bestand das Problem darin, dass Eclipse sich irgendwie dafür entschieden hat, nur eine einzige Methode in meiner Testklasse auszuführen (ich konnte jedoch nicht herausfinden, warum). Insbesondere wenn Sie nichts in Ihrem Setup geändert haben, überprüfen Sie Ihre Laufkonfiguration.

0
Qw3ry

In meinem Fall habe ich den Projektnamen in pom.xml geändert, sodass das neue Zielverzeichnis generiert wurde und junit Klassen im alten Verzeichnis suchte. Sie müssen das Verzeichnis für JUnit auch in Eclipse ändern

Properties -> Java Build Path -> Source (Default output folder)

Überprüfen Sie dies auch, da einige der im selben Fenster aufgelisteten Quellordner möglicherweise einen früheren Verzeichnisnamen haben. Sie müssen sie auch ändern.

0
Dawid D

Junit 4.11 funktioniert nicht mit Spring Test Framework ..__ Dieser Link InitializationError bei Verwendung von Spring + Junit erläutert, wie Sie Junit initalizationError in Eclipse debuggen.

0
jeffery.yuan

Ich hatte das gleiche Problem ... Ich benutzte das Maven-Erstellungstool mit dem JUnit-Abhängigkeitsbereich als 'test' und meine @ Test-Methode befand sich im Hauptmodul.

Um zu lösen, habe ich: 1. Kommentierte das Bereichs-Tag der JUnit-Abhängigkeit in der Datei pom.xml 2. Paket neu erstellen 3. Stellen Sie sicher, dass die Test-Klasse nur einen Konstruktor hat

Das Problem kann zweifach sein: 1. Die JUnit-Abhängigkeit ist auf den Testbereich beschränkt und die @ Test-Methode befindet sich im Hauptbereich 2. Die Testklasse hat mehrere Konstruktoren

0

Ich habe der Testmethode versehentlich einen Parameter hinzugefügt, der zu einem Initialisierungsfehler geführt hat.

0
Stanley

Ich hatte das gleiche Problem, die Lösung für mich ist folgende.

Ich hatte nur die Datei junit.jar aus dem Web installiert, aber diese Bibliothek stand im Zusammenhang mit hacrest-core.jar Wenn ich die Datei hacrest-core.jar heruntergeladen und in mein Projekt eingefügt habe, funktioniert alles gut.

0
KostasA

Ich hatte nait-4.12.jar von poi.Apache.org zu meinem Build-Pfad in Eclipse hinzugefügt. Ich löschte es (Projekt, Eigenschaften, Java-Erstellungspfad, Bibliotheken, junit-4.12.jar, Remove) und erlaubte dann in meiner Testklasse, dass Eclipse nach dem Drücken von Strg-1 "Fix-Projekt-Setup" festlegte. Keine Probleme mehr! :-)

0
i2B

Für mich war die Lösung eine der Methoden, die ungültig sein musste, ich hatte es als Boolean.

0
PaN

Nur wenn dies hilft, habe ich Junit5 verwendet, aber das @RunWith (SpringRunner.class) zeigte auf den Import org.springframework.test.context.junit4.SpringRunner, der mit den Dingen herumspielte und daher den Initialisierungsfehler verursachte. Ich habe das behoben und es hat funktioniert.

0
Divas