Der Import org.junit kann nicht aufgelöst werden


112

Ich muss ein Java-Problem für ein Interview lösen, und sie haben mir die Testklasse geschickt. Es beginnt mit

import org.junit.Before;

und hat auch die folgende Syntax an Stellen:

@RunWith(JUnit4.class)
...
@Before
...
@Test

Ich habe Java schon eine Weile nicht mehr benutzt, daher verwirrt mich das ein wenig. Ich habe Eclipse heruntergeladen und beim Versuch, diese Testdatei zu kompilieren, treten beim Import und bei den @ -Zeichen Fehler auf. Der Importfehler löst aus:

The import org.junit cannot be resolved.

Und das @RunWith wird nicht einmal erkannt, weil es versucht, es in einen Typ aufzulösen.


1
Was haben Sie im Internet gesucht? Sie möchten, dass wir Ihnen ausführlich erklären, wie Sie einen JUnit 4-Testfall ausführen können? (Hinweis: Es gibt dies JUnit4.classin Ihrem Code)
Luiggi Mendoza


1
Sie müssen dem Projekt eine Junit-JAR-Datei hinzufügen. Sie können junit-dep-4.8.2.jar verwenden. Dann können Sie mit der rechten
Maustaste

2
Haben Sie die JU-Datei von jUnit zu Ihrem Erstellungspfad in Eclipse hinzugefügt?
Pradeep Simha

Ich hätte diese Frage einfach googeln sollen. Danke für die Hilfe.
SKLAK

Antworten:


191

Sie müssen junitdem Klassenpfad Ihres Projekts eine Bibliothek hinzufügen . Abhängig von Ihrem Entwicklungssetup gibt es mehrere Möglichkeiten, dies zu erreichen.

  1. Befehlszeile : Bei Befehlszeilenaufrufen müssen Sie junit.jarden Klassenpfad Ihrer Anwendung mit hinzufügen java -cp /path/to/junit.jar. Schauen Sie sich die Antworten hier an .

  2. Verwenden von Eclipse : Eclipse-Distributionen werden mit dieser Bibliothek gebündelt. So können Sie sie für Ihr Projekt verwenden. Klicken Sie mit der rechten Maustaste auf das Eclipse-Projekt und navigieren Sie:

Eigenschaften -> Java-Erstellungspfad -> Bibliotheken -> Bibliothek hinzufügen -> JUnit -> Junit 3/4

In den Szenarien, in denen Sie eine andere Version des JARs verwenden möchten, sollten Sie anstelle von " Bibliothek hinzufügen" oben auf " Externes Jar hinzufügen" klicken und die Bibliothek im Dateisystem suchen.


1
@NishantShreshth Wie füge ich das in ein mavenProjekt ein?
Kasun Siyambalapitiya

Ich habe JUnit 4 über Eigenschaften -> Java-Erstellungspfad hinzugefügt, aber hin und wieder zeigt mir Eclipse diesen Fehler an, obwohl das Ausführen der Tests ohne Probleme möglich ist. Durch einen Neustart von Eclipse wird das Problem für eine Weile behoben. Irgendeine Erklärung dafür?
Thomas W

Funktioniert bei mir nicht Sobald das Projekt modular aufgebaut ist, sind alle Schaltflächen auf der Registerkarte Bibliotheken grau. (Mit Eclipse 2019-09 und Java 11.0.4).
Gyro Gearloose

14

Klicken Sie mit der rechten Maustaste auf das Eclipse-Projekt und navigieren Sie:

Eigenschaften -> Java-Erstellungspfad -> Bibliotheken -> Bibliothek hinzufügen -> JUnit -> Junit 3/4

Es funktioniert bei mir.


6

Sie können einfach nach einer Zeile wie "@Test" suchen und dann den Quickfix "Junit 4-Bibliothek zum Erstellungspfad hinzufügen" in dieser Zeile verwenden. Ich denke, das ist schneller als das manuelle Hinzufügen von Junit zum Projekt.


Dies löst es in meiner Situation nicht. JUnit ist perfekt im Pfad, zeigt aber weiterhin den Fehler an.
IT

1
Funktioniert für mich ^^
jump_monkey

6

Wenn Sie maven verwenden und sich dieser Code im mainOrdner befindet, versuchen Sie, ihn in den testOrdner zu verschieben.


3
@VigneshrajSekarbabu Da Benutzer normalerweise den junitBereich als festlegen test, bedeutet dies, dass sie nur im Testordner arbeiten.
Searene

Vielen Dank an @searene. Ich habe versucht, meine TestBase in src / main / java zu haben, konnte dann aber die testNG-Anmerkungen nicht abrufen. also nach src / test / java verschoben. Aber jetzt versuche ich, einen RetryAnalyzer in src / main / java zu erstellen, und IRetrAnalyzer befindet sich in org.testng, den ich in den Klassen src / main / java nicht bekommen kann. Irgendeine Idee, was das lösen könnte?
Vigneshraj Sekarbabu

@VigneshrajSekarbabu Eine Möglichkeit besteht darin, den Umfang Ihrer testbezogenen Abhängigkeiten zu überprüfen und sicherzustellen, dass dies nicht der Fall ist test, damit Sie alles darin verwenden können /src/main/java.
Searene

5

Wenn Sie Eclipse verwenden und an einem Maven-Projekt arbeiten, funktionieren auch die obigen Schritte.

Klicken Sie mit der rechten Maustaste auf Ihren Stammordner.

Properties -> Java Build Path -> Libraries -> Add Library -> JUnit -> Junit 3/4

Schritt für Schritt Anleitung hier


Bei mir hat das nur geklappt. Ich habe ein Remote-Debugging meiner Webanwendung durchgeführt, sodass Eclipse einige Probleme mit der Integration von Junit hatte. In Bezug auf Maven importiert Maven Junit und führt die Tests aus, wenn wir mvn clean install ausführen. Kein Experte, aber das ist es, was meiner Meinung nach passiert oder zumindest bei mir passiert ist.
Sarthakgupta072

2

Die Junit-JAR-Datei befindet sich anscheinend nicht im Pfad. Stellen Sie außerdem sicher, dass Sie jdk1.5 oder höher verwenden.


Nicht nur das JAR, OP sollte es als JUnit-Test ausführen (möglicherweise fragt OP, wie die Java-Klasse ausgeführt werden soll, wenn sie keine hatpublic static void main(String[] args)
Luiggi Mendoza

Ich wusste nicht, wie ich die JUnit verknüpfen soll. Ich habe es herausgefunden. Klicken Sie mit der rechten Maustaste auf den Projektnamen und verknüpfen Sie JUnit. Vielen Dank.
SKLAK

2

Wenn Sie Java 9 oder höher verwenden, müssen Sie möglicherweise die Junit-Abhängigkeit in Ihrer module-info.java benötigen

module myModule {
    requires junit;
}

Ich bin mir ziemlich sicher, dass das Problem, mit dem ich konfrontiert bin und das mit der ursprünglichen Frage übereinstimmt, mit diesem neuen Modulmechanismus zusammenhängt. Jetzt habe ich diese Zeile zu meiner vorhandenen module-info.java hinzugefügt und es gibt kein rotes Kreuz mehr im Paket-Explorer, aber in der Quelle bleibt alles beim Alten.
IT

2

Wenn Sie Maven verwenden, können Sie im Kontext auf "Maven / Projekt aktualisieren ..." klicken und ausführen.

Geben Sie hier die Bildbeschreibung ein


Wenn ich das mache, wird module-info.java mit Fehlern gefüllt und Lambdas werden nicht erkannt. Eclipse / maven haben die Bibliotheks- und Java-Version auf 1.5 zurückgesetzt, und ich habe <plugin> <groupId> org.apache.maven.plugins </ groupId> <artifactId> maven-compiler-plugin </ arifactId> <version> 3.8 .0 </ version> <configuration> <release> 11 </ release> </ configuration> </ plugin> in meinem pom
Gyro Gearloose

1

Beim Starten der Codezeile wird das Kopieren nach 'Junit' oder 'TestNG' mit Fehler angezeigt, bis Sie die Bibliothek mit der Projektdatei importieren.

So importieren Sie Bibliotheken in ein Projekt:

Right Click on the Project --> Properties --> Java Build Path --> Libraries -> Add Library -> 'Junit' or 'TestNG'

Junit-Bibliotheken hinzufügen


1

Wenn Sie TestNG zu Ihren Maven-Abhängigkeiten hinzufügen, ändern Sie den Bereich von Test zu Kompilieren. Hoffentlich würde dies Ihr Problem lösen.


Bitte erwägen Sie, solche Vorschläge als Kommentare zu setzen.
Hades

1

Sie müssen die Junit-Abhängigkeit in die Datei pom.xml einfügen. Dies bedeutet, dass Sie mit der neuesten Version aktualisieren müssen.

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency> 

0

Für den Fall, dass Sie Ihre eigene Testklasse erstellen möchten. Gehen Sie in Eclipse zu Datei -> Neu -> J Unit Test Case . Anschließend können Sie im Popup des Assistenten alle Pfade auswählen und die Klasseneinstellungen testen.


-1

Update auf die neueste JUnit-Version in pom.xml. Für mich geht das.


Diese Antwort wäre besser mit mehr Details darüber, wie man das macht - dh welchen Code man einfügt, wie man die neueste Version herausfindet, wie man online nach dem Code sucht, um den richtigen Text zu erhalten usw.
LightCC
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.