Klasse nicht gefunden: Leere Testsuite in IntelliJ


183

Ich beginne gerade mit dem Informatikprogramm an meinem College und habe einige Probleme mit IntelliJ. Wenn ich versuche, Komponententests durchzuführen, wird die Meldung angezeigt

Process finished with exit code 1
Class not found: "edu.macalester.comp124.hw0.AreaTest"Empty test suite.

Außerdem wird auf der linken Seite meines Bildschirms die Meldung "Es wurden keine Tests gefunden" angezeigt. Mein Testcode ist hier:

package edu.macalester.comp124.hw0;


import org.junit.Test;
import static org.junit.Assert.*;

public class AreaTest {

    @Test
    public void testSquare() {
    assertEquals(Area.getSquareArea(3.0), 9.0, 0.001);
    }

    @Test
    public void testCircle() {
    assertEquals(Area.getCircleArea(3.0), 28.2743, 0.001);
    }
}

Und mein Projektcode ist hier:

package edu.macalester.comp124.hw0;

import java.lang.Math;
public class Area {

/**
 * Calculates the area of a square.
 * @param sideLength The length of the side of a square
 * @return The area
 */
public static double getSquareArea(double sideLength) {
    // Has been replaced by correct formula
    return sideLength * sideLength;
}

/**
 * Calculates the area of a circle.
 * @param radius The radius of the circle
 * @return The area
 */
public static double getCircleArea(double radius) {
    // Replaced by correct value
    return radius * 2 * Math.PI;
}

}

Wie kann ich meine Tests zum Laufen bringen? Ich verwende die neueste Version von IntelliJ IDEA CE.


7
So viele Dinge können schief gehen. Für mich war es so einfach wie das Eingeben mvn clean packagedes Terminals. Unsicher, warum IntelliJ das Projekt zu Beginn falsch importiert hat.
MarkHu

1
Für mich machen Sie einfach den Ordner als "Test Resource Root" ...
Xin Meng


Build -> Clean and Build -> Rebuild hat mir gereicht.
Gustavoknz

Antworten:


109

Hatte die gleiche Nachricht. Ich musste die Run / Debug-Konfiguration entfernen.

In meinem Fall habe ich den Komponententest zuvor als lokalen Test ausgeführt. Danach habe ich meinen Test in das androidTest-Paket verschoben und versucht, es erneut auszuführen. Android Studio erinnerte sich an die Konfiguration der letzten Ausführung und versuchte, sie erneut als lokalen Komponententest auszuführen, der denselben Fehler verursachte.

Nach dem Entfernen der Konfiguration und dem erneuten Ausführen des Tests wurde eine neue Konfiguration generiert und funktioniert.

Geben Sie hier die Bildbeschreibung ein


Ich denke, in den meisten Fällen wäre Ihre Lösung die universellste und die am wenigsten magische. Arbeitete in meinem Projekt wie ein Zauber.
Ba3a

Ich habe es versucht, aber es hat nicht von alleine funktioniert. Ich musste auch die Cashes ungültig machen. File > Cashes / Restart
Lukasz

Ich habe es versucht und auch die Kassen ungültig gemacht. Funktioniert aber immer noch nicht.
Flügel

Dies funktionierte für mich, nachdem ich daran gedacht hatte, auf die offensichtliche OK-Schaltfläche zu klicken, anstatt nur das Dialogfeld zu schließen :-)
rimsky

In meinem Android Studio wird kein Eintrag "Spezifischer Instrumentierungsläufer" angezeigt.
David

58

ich ging zu

File -> Invalidate Caches/Restart...

und dann hat es bei mir geklappt.


6
Ich habe das gemacht und musste dann auch die Testkonfigurationen löschen.
Johan Henkens

In meinem Fall hat es nicht geholfen.
user3791111

Datei> Caches ungültig machen / Neustart> Nur Neustart hat bei mir funktioniert
Hashmatullah Noorzai

49

Ich hatte das gleiche Problem. Ich habe das Projekt neu aufgebaut und es hat mir geholfen.

Gehen Sie zu Erstellen -> Projekt neu erstellen

Wenn Sie danach das Maven-Tool verwenden, empfehle ich die Option Alle Maven-Projekte erneut importieren


Wenn es nicht hilft, versuchen Sie es mit anderen möglichen Lösungen:

  • Gehen Sie zu Datei -> Caches ungültig machen / neu starten -> Ungültig machen und neu starten

oder:

  • Klicken Sie in Ihrer Maven-Projektstruktur src / main / java mit der rechten Maustaste auf das Java- Verzeichnis und wählen Sie die Option Verzeichnis als -> Quellenstamm markieren.

    Machen Sie dasselbe mit dem Testverzeichnis, also: src / test / java klicken Sie mit der rechten Maustaste auf das Java- Verzeichnis und wählen Sie die Option Verzeichnis markieren as -> Test Sources Root

oder:

  • Gehen Sie zu Ausführen -> Konfigurationen bearbeiten und entfernen Sie im Abschnitt JUnit Testkonfigurationen. Änderungen übernehmen. Versuchen Sie anschließend, Ihre Tests auszuführen. Eine neue Konfiguration sollte automatisch erstellt werden.

oder:

  • Gehen Sie zu Datei -> Projektstruktur , wählen Sie Module aus , wählen Sie dann das richtige Modul aus und wechseln Sie zur Registerkarte Pfade .
    Prüfen Optionen:
    Optionsfeld Verwenden Modul Kompilierung Ausgabepfad ausgewählt werden soll.

    Der Ausgabepfad sollte sich in Ihrem Projekt befinden. Auch Test - Ausgangspfad sollte Verzeichnis in Ihrem Projekt. Beispielsweise kann es ähnlich aussehen:
    Ausgabepfad: C: \ Pfad \ zu \ Ihrem \ Modul \ IhrModul \ Ziel \ Klassen
    Test Ausgabepfad : C: \ Pfad \ zu \ Ihrem \ Modul \ IhrModul \ Ziel \ Testklassen

    Ausgabe ausschließen Pfade sollten abgewählt werden.

10
Der Wiederaufbau des Projekts ( Build -> Rebuild Project) hat bei mir funktioniert. Danke dir!
Francisco C.

Diese Lösung hat bei mir funktioniert, das Letzte an den Modulen und die Verwendung eines Ausgabepfads. Vielen Dank.
Mohammad Ganji

Löschen Sie als verzweifeltere Lösung die IDE-Datei und öffnen Sie das Projekt erneut. Sie verlieren jedoch einige Konfigurationen / Einstellungen.
Aaron

Einstellung <project-root>/src/test/javaals Testwurzel, und das Build -> Rebuild Projecthat bei mir funktioniert. Auch als die Klassen, die Tests enthielten, in einem Paket mit dem Paketnamen beginnend waren java.*, bekam ich eine Sicherheitsausnahme.
Master Chief

Das Problem ist, dass die Abhängigkeiten veraltet waren
Dellasavia

17

Dies kann auch passieren, wenn Ihr Testordner als separates Modul importiert wurde (ein kleines Quadrat wird auf dem Ordnersymbol in der Projektansicht angezeigt).
Entfernen Sie das Modul, indem Sie den Testordner in der Projektansicht auswählen und drücken DEL.
Dann starten Sie Ihren Test.
Wenn ein Popup-Dialogfeld mit der Fehlermeldung angezeigt wird, dass kein Modul ausgewählt ist, geben Sie Ihr Root-Modul in der Dropdown-Liste an.


3
Dies war auch mein Problem (Quadrat auf Testordner - hätte nicht gewusst, was das bedeutet!); Um dies zu beheben, öffnete ich die Ausführungskonfiguration und stellte fest, dass "Klassenpfad des Moduls verwenden:" auf das Testmodul festgelegt wurde. Ich habe es stattdessen in den Klassenpfad meines Projekts geändert, und es hat gut funktioniert. Vielen Dank für den Hinweis auf das "separate Modul" gotcha!
Redboots

Genau das ist mir passiert. Ich habe mit start.spring.io ein Spring-Projekt erstellt und es geöffnet. Danach habe ich den SpringBootTest gestartet und bin auf den Fehler "Klasse nicht gefunden:" ... "Leere Testsuite" gestoßen. Nachdem Sie Ihrer Lösung gefolgt und die Taste LÖSCHEN im Testordner gedrückt und die Laufkonfiguration neu erstellt hatten, war alles in Ordnung. Zusätzlicher Hinweis: Wenn Sie im Testordner auf die Schaltfläche Löschen klicken, wird ein Dialogfeld mit der Meldung "Es werden keine Dateien gelöscht" angezeigt. Also keine Angst, den Knopf zu drücken.
Kleenxcoder

14

Ich hatte ein ähnliches Problem, nachdem ich ein neues IntelliJ-Projekt gestartet hatte. Ich habe festgestellt, dass der "Modulkompilierungs-Ausgabepfad" für mein Modul nicht richtig angegeben wurde. Als ich den Pfad im "Kompilierungsausgabepfad" des Moduls dem richtigen Speicherort zuordnete, wurde das Problem behoben. Der Kompilierungsausgabepfad wird in den Projekteinstellungen zugewiesen. Wählen Sie unter Module das betreffende Modul aus und wählen Sie die Registerkarte Pfade ...

Registerkarte Pfade in den Projekteinstellungen | Modul-Dialog

Bildschirmfoto

... Ich habe die Compiler-Ausgabe an einen Ordner mit dem Namen "Ausgabe" gesendet, der im übergeordneten Projektordner vorhanden ist.


14

In meinem Fall hatte ich alles andere am richtigen Ort, aber ich arbeitete an einer Java-Bibliothek mit Kotlin . Ich habe nur vergessen, das Plugin anzuwenden:

apply plugin: 'kotlin-android'

Und jetzt funktioniert es wie erwartet.


1
Auch für mich. Es ist ärgerlich, dass es beim Erstellen von Modulen keine Kotlin-Option gibt.
Rupert Rawnsley

11

Mein Problem hier war also mit Ordnernamen. Ich hatte meinen Codeordner Classes 2016/2017 aufgerufen, was IntelliJ nicht gefiel. Entfernen Sie einfach den Schrägstrich (oder ein anderes beleidigendes Zeichen im Pfad), importieren Sie das Projekt erneut und los geht's!


Das hat mir geholfen. Für andere hatte ich den Ordner in Dropbox. Als ich es aus Dropbox herauszog und erneut importierte, verschwand das Problem.
Mick Sear

Diese Antwort verdient einen Friedensnobelpreis!
Ali Abbas Jaffri

7

In Android Studio 3.0 + werden UI-Tests manchmal als Komponententests interpretiert und es wird nicht nach der Auswahl der Zielbereitstellung gefragt. Sie können zu Konfiguration bearbeiten gehen und es als Integrationstest markieren, und es würde funktionieren


Unter Android Studio 3.0.1 funktioniert die Schaltfläche "Ausführen" neben dem Test nicht. Nach dem Update auf 3.1 Canary 8 hat es wieder funktioniert.
Marc

6

Ich hatte das gleiche Problem und das Wiederherstellen / Ungültigmachen des Caches usw. funktionierte nicht. Scheint, als wäre das nur ein Fehler in Android Studio ...

Eine vorübergehende Lösung besteht darin, Ihre Komponententests über die Befehlszeile auszuführen mit:

./gradlew test

Siehe: https://developer.android.com/studio/test/command-line.html


6

Wenn das Projekt ein Kompilierungsproblem aufweist, werden möglicherweise keine Tests ausgeführt. Erstellen Sie also zuerst ein Projekt als Build -> Build Project. Führen Sie den Test nach erfolgreicher Kompilierung erneut aus.

Wenn nichts funktioniert, schließen Sie einfach das Projektfenster, löschen Sie das Projekt und importieren Sie es erneut als Gradle / Maven-Projekt. Dadurch wird alles für Sie festgelegt, indem die vorhandenen von IntelliJ erstellten Dateien überschrieben werden. Dadurch wird der ungültige erstellte Cache entfernt.

Sie können den Cache auch einfach ungültig machen.

File -> Invalidate Caches/Restart


5

Ich hatte die gleiche Frage, als ich einige jaraus Maven importierte und anschließend den empty-test-suiteFehler verursachte.

In meinem Fall lag es daran, dass der Maven die Moduldateien zurücksetzte. Was ich durch Löschen meiner Standardkonfiguration behoben habe:

  1. Öffnen Sie die Projektstruktur mit der Verknüpfung shift- ctrl- alt-s

Screenshot der PModules-Quellen

  1. Schauen Sie sich Module> Quellen an und füllen Sie das Quellenpaket oder das Testpaket aus.

5

Ich hatte das gleiche Problem (Android Studio 3.2 Canary 4) und habe die meisten in anderen Antworten beschriebenen Vorschläge ausprobiert - ohne Erfolg. Beachten Sie, dass dies passiert ist, nachdem ich die Datei aus testdem androidTestOrdner verschoben habe . Es wurde in Laufkonfigurationen weiterhin als Test anstelle eines instrumentierten Tests angezeigt.

Am Ende erstelle ich eine neue Datei:

  1. Erstellen Sie eine neue instrumentierte Testklasse mit einem anderen Namen.
  2. Kopieren Sie den gesamten Code aus Ihrer Klasse.
  3. Starte es.
  4. Löschen Sie die alte Klasse.
  5. Benennen Sie die neue Klasse in den gewünschten Namen um.

Keine schlechte Idee =) Danke!
Andrew Grow

5

Interessanterweise habe ich dieses Problem aus verschiedenen Gründen oft gesehen. Zum Beispiel den Cache ungültig machen und neu starten geholfen.

Zuletzt habe ich das Problem behoben, indem ich meinen Ausgabepfad unter Datei -> Projektstruktur -> Projekt -> Projekt-Compiler-Ausgabe korrigiert habe : absolute_path_of_package / out

für zB: / Users / random-guy / myWorkspace / src / DummyProject / out


Es ist dieses, das meine Testsuite zum Laufen gebracht hat! Vielen Dank!
Frank

4

Ein erneutes Importieren eines Projekts oder Moduls kann das Problem lösen. Ich habe dieses Problem durch Umbenennen des Paketnamens bei der Entwicklung behoben. Aber der pfad und Testausgangspfad ist der alte Weg. Intellij kann die Klasse also nicht vom alten Pfad finden. Der einfachste Weg ist also, den Ausgangspfad zu korrigieren und den Ausgabepfad zu testen.

Intellij Moduleinstellung


Aus irgendeinem Grund funktioniert das Erben des Projektpfads bei MacOs bei mir nicht. Haben Sie Ideen, warum dies passieren kann?
Johnny_D

@Johnny_D Sind Sie sicher, dass Ihr Problem darin besteht, das Paket umzubenennen?
Bejond

3

Dies geschieht auch, wenn Ihr Modul- und / oder Projekt-JDK nicht richtig konfiguriert ist.


Bitte klären Sie die "richtige Konfiguration". Ich denke nicht, dass dies für Benutzer mit diesem Problem hilfreich ist. Vielen Dank!
Eggmatters

3

Das Löschen .ideaund erneute Importieren des SBT-Projekts hat dieses Problem für mich gelöst.


Es funktioniert nach dem Löschen des .idea-Ordners und dem erneuten Importieren des Maven-Projekts (y)
Amine Soumiaa

Das war auch für mich so. Ich habe die obigen Vorschläge durchgesehen, aber keiner hat funktioniert. Ich habe den .idea-Basisordner und auch die .iml-Dateien in den Submodulen gelöscht.
Dennis

3

In meinem Fall hat IntelliJ die Testquellen aus einem seltsamen Grund nicht kompiliert. Ich habe einfach die Build-Konfiguration geändert und das Maven-Ziel clean test-compileim Before launchAbschnitt hinzugefügt


Versuchte alles oben, aber nur das hat geholfen :) Danke!
Antenka

2

In meinem Fall gab es ein Problem mit dem Testnamen :).

Wenn der Name war: dummyNameTestdann keine Tests bekommen, wo gefunden, aber falls testDummyNamealles in Ordnung war


1

Ich hatte das gleiche Problem. In meinem Fall hatte ich einige Testklassen in einem Paket / Ordner außerhalb des Hauptordners. Aber als ich die Run-Konfiguration überprüfte, versuchte ich immer, nach Klassen im Hauptordner zu suchen (und nicht nach meinen Paketen außerhalb von main). Wenn dies der Fall ist, müssen Sie Ihre Pakete entweder an die Stelle verschieben, auf die die Run-Konfiguration zeigt. Oder ändern Sie die Ausführungskonfiguration so, dass sie auf Ihre Pakete verweist.


1

Benötigt Ihr Test ein Android-Gerät (Emulator oder Hardware)?
Wenn ja, wird es als "instrumentierter Test" bezeichnet und befindet sich in "Modulname / src / androidTest / java /".
Wenn nicht, wird es als "lokaler Komponententest" bezeichnet und befindet sich in "Modulname / src / test / java".

https://developer.android.com/training/testing/start/index.html

Ich habe den gleichen Fehler erhalten, weil ich einen lokalen Komponententest geschrieben habe, der jedoch für instrumentierte Tests in den Ordner gelegt wurde. Das Verschieben des lokalen Komponententests in den Ordner "src / test / java" hat das Problem für mich behoben.


1

Erhielt den gleichen Fehler. Mein Gerät war nicht mit Android Studio verbunden. Als ich mich mit dem Studio verbunden habe. Es klappt. Dies löst mein Problem.


1

Dies liegt wahrscheinlich daran, dass der Ordner nicht als Testquelle festgelegt ist. Dies kann über Moduleinstellungen> Module erfolgen.


1

Für mich wurde das Projekt außerhalb des Projekts kompiliert. Ich ändere nur den Weg. Zum Ändern des Pfades (ich benutze Mac).

  • Gehen Sie zu Datei -> Projektstruktur
  • Gehen Sie zum Modul auf der linken Seite.
  • Pfade auswählen, Optionsfeld auswählen (Ausgabepfad zum Kompilieren des Moduls verwenden)
  • Geben Sie den Ausgabepfad und den Testausgabepfad an, der sich in Ihrem Projekt befindet
  • Deaktivieren Sie Ausgabepfade ausschließen.
  • Gehen Sie zu Datei -> Klicken Sie auf Cache ungültig machen und starten Sie neu

1

In meinem Fall wurde das Problem behoben, indem ich in meine ging build.gradleund mich änderte

dependencies {
    testImplementation 'junit:junit:4.12'
}

zu

dependencies {
    testCompile 'junit:junit:4.12'
}

Das hat mir überraschenderweise auch geholfen. Sieht so aus, als hätte es eine Neukompilierung erzwungen. Versuchte mehrere Bereinigungen / Cache vor ohne Hilfe
Dieter Menne

Für das, was es wert ist, wurde das Problem für mich wie die oben vorgeschlagene Lösung behoben. Der Grund war jedoch, dass ich ein Plugin verwendete, das den Befehl 'Implementierung' nicht unterstützte. Daher würde ich vorschlagen, dass Sie möglicherweise prüfen möchten, ob einige Plugins Ihres Projekts auch Updates enthalten. Vielleicht wäre ein besserer Ansatz, das Plugin zu aktualisieren, da Gradle den Befehl "compile"
ablehnen

1

Ich habe alle Lösungen ausprobiert, aber keine hat geholfen. Am Ende starte ich den Test im Debug-Modus und ... es fing an zu funktionieren. Vielleicht wurde der Cache eines Maven geleert. Es ist schwer zu sagen. Es klappt. Versuchenmvn test -X


1

Klicken Sie einfach mit der rechten Maustaste auf die Datei in den Projektfenstern und wählen Sie

"Führen Sie Ihren Test aus ".

Jetzt fängt alles in Ordnung an, wahrscheinlich weil die fehlerhafte Laufkonfiguration neu erstellt wird.


1

Dies kann (mindestens einmal für mich;) nach der Installation der neuen Version von IntelliJ passieren und die IntelliJ-Plugins wurden noch nicht aktualisiert.

Möglicherweise müssen Sie das Check for updates…Menü IntelliJ Help manuell ausführen.


1

Klicken Sie in Ihrer Maven-Projektstruktur src / main / java mit der rechten Maustaste auf das Java-Verzeichnis und wählen Sie die Option Verzeichnis als -> Quellenstamm markieren

Machen Sie dasselbe mit dem Testverzeichnis, also: src / test / java Klicken Sie mit der rechten Maustaste auf das Java-Verzeichnis und wählen Sie die Option Verzeichnis markieren als -> Test Sources Root

Arbeitete für mich :-)


0

Das gleiche Problem hier mit IDEA 15.0.6, und nichts hat geholfen, außer als ich das Paket umbenannt habe, in dem sich die Testklasse befand. Danach habe ich es wieder in seinen ursprünglichen Namen umbenannt und es hat immer noch funktioniert, sodass die Umbenennungsaktion möglicherweise einen Cache geleert hat.


0

Für mich lag es daran, dass mein Projekt in ein Verzeichnis außerhalb des Projekts kompiliert wurde. In Pfaden waren die Ausgabepfade \ Produktion \ Projektname und \ Test \ Projektname, wodurch sie in C: \ Produktion \ Projektname abgelegt wurden. Durch Ändern in den vollständigen Pfad des Projekts konnten meine Tests auf die Klassendateien zugreifen.

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.