Classe introuvable: suite de tests vide dans IntelliJ

185

Je viens de commencer le programme d'informatique de mon université et j'ai quelques problèmes avec IntelliJ. Lorsque j'essaye d'exécuter des tests unitaires, j'obtiens le message

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

Je vois également un message intitulé "Aucun test trouvé" sur le côté gauche de mon écran. Mon code de test est ici:

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);
    }
}

Et mon code de projet est ici:

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;
}

}

Comment faire fonctionner mes tests? J'utilise la version la plus récente d'IntelliJ IDEA CE.

Arnbobo
la source
8
Tant de choses peuvent mal tourner. Pour moi, c'était aussi simple que de taper mvn clean packagedans le terminal. Je ne sais pas pourquoi IntelliJ a importé le projet de manière incorrecte au début.
MarkHu
1
Pour moi, créez simplement le dossier en tant que "racine de la ressource de test" ...
Xin Meng
Construire -> Nettoyer et construire -> Reconstruire me suffisait.
gustavoknz

Réponses:

109

Avait le même message. J'ai dû supprimer la configuration Exécuter / Déboguer.

Dans mon cas, j'ai déjà exécuté le test unitaire en tant que test local. Après cela, j'ai déplacé mon test vers le package androidTest et essayé de l'exécuter à nouveau. Android Studio s'est souvenu de la dernière configuration exécutée, il a donc essayé de l'exécuter à nouveau en tant que test unitaire local qui a produit la même erreur.

Après avoir supprimé la configuration et réexécuté le test, une nouvelle configuration a été générée et a fonctionné.

entrez la description de l'image ici

com2ghz
la source
Je pense que dans la plupart des cas, votre solution serait la plus universelle et la moins magique. A travaillé dans mon projet comme un charme.
ba3a du
Je l'ai essayé mais cela n'a pas fonctionné tout seul. J'ai également dû invalider les espèces. File > Cashes / Restart
Lukasz
Je l'ai essayé et j'ai également invalidé les encaissements. Mais ne fonctionne toujours pas.
wings
Cela a fonctionné pour moi après que je me suis souvenu de cliquer sur le bouton ok évident au lieu de simplement fermer la boîte de dialogue :-)
rimsky
Je ne vois aucune entrée "Specific instrumentation runner" dans mon Android Studio.
david le
62

je suis allé à

File -> Invalidate Caches/Restart...

et puis cela a fonctionné pour moi.

user674669
la source
6
Je l'ai fait, puis j'ai également dû supprimer les configurations de test.
Johan Henkens
Cela n'a pas aidé dans mon cas.
user3791111
Fichier> Invalidate Caches / Restart> Just Restart a fonctionné pour moi
Hashmatullah Noorzai
53

J'ai eu le même problème. J'ai reconstruit le projet et cela m'a aidé.

Allez dans Build -> Rebuild Project

Après cela, si vous utilisez l'outil Maven, je vous recommande d'utiliser l'option Réimporter tous les projets Maven


Si cela ne vous aide pas, essayez d'autres solutions possibles:

  • Allez dans Fichier -> Invalidate Caches / Restart -> Invalidate and Restart

ou:

  • Dans la structure de votre projet Maven src / main / java, faites un clic droit sur le répertoire java et sélectionnez l'option Marquer le répertoire comme -> Sources Root

    De même, faites de même avec le répertoire de test afin: src / test / java faites un clic droit sur le répertoire java et sélectionnez l'option Marquer le répertoire as -> Racine des sources de test

ou:

  • Allez dans Exécuter -> Modifier les configurations et dans la section JUnit, supprimez les configurations de test. Appliquer les modifications. Ensuite, essayez d'exécuter vos tests. La nouvelle configuration doit être créée automatiquement.

ou:

  • Allez dans Fichier -> Structure du projet , sélectionnez Modules , puis sélectionnez votre module approprié et accédez à l' onglet Chemins .
    Vérifiez les options:
    Le bouton radio Utiliser le chemin de sortie de compilation du module doit être sélectionné.

    Le chemin de sortie doit être à l'intérieur de votre projet. Le chemin de sortie du test doit également être un répertoire dans votre projet. Par exemple, cela peut ressembler à:
    Chemin de sortie: C: \ chemin \ vers \ votre \ module \ votreModule \ cible \ classes
    Chemin de sortie du test: C: \ chemin \ vers \ votre \ module \ votreModule \ cible \ test-classes

    Exclure la sortie les chemins doivent être désélectionnés.
Schakal
la source
11
Reconstruire le projet ( Build -> Rebuild Project) a été ce qui a fonctionné pour moi. Merci!
Francisco C.
Cette solution a fonctionné pour moi, la dernière chose concernant les modules et l'utilisation d'un chemin de sortie. Merci.
Mo Ganji
Comme solution plus désespérée, supprimez le fichier .idea et ouvrez à nouveau le projet. Vous perdrez cependant certaines configurations / paramètres.
Aaron
Définir <project-root>/src/test/javacomme racine de test, et cela a Build -> Rebuild Projectfonctionné pour moi. De plus, lorsque les classes contenant des tests étaient dans un package avec un nom de package commençant par java.*, j'ai obtenu une exception de sécurité.
Master Chief
Le problème est que les dépendances étaient obsolètes
dellasavia
18

Cela peut également se produire si votre dossier de test a été importé en tant que module séparé (un petit carré est affiché sur l'icône du dossier dans la vue du projet).
Retirez le module en sélectionnant le dossier de test dans la vue du projet et appuyez sur DEL.
Puis commencez votre test.
Si une boîte de dialogue contextuelle apparaît avec un message d'erreur indiquant qu'aucun module n'est sélectionné, spécifiez votre module racine dans la liste déroulante.

Tobi
la source
3
C'était aussi mon problème (carré sur le dossier de test - je n'aurais pas su ce que cela signifiait!); Pour corriger, j'ai ouvert la configuration d'exécution et j'ai trouvé que "Utiliser le chemin de classe du module:" était défini sur le module de test. Je l'ai changé pour le chemin de classe de mon projet à la place, et cela a bien fonctionné. Merci d'avoir signalé le "module séparé" gotcha!
Redboots
C'est exactement ce qui m'est arrivé. J'ai créé un projet Spring en utilisant start.spring.io et je l'ai ouvert. Ensuite, j'ai démarré le SpringBootTest et j'ai rencontré l'erreur "Classe non trouvée:" ... "Suite de tests vide". Après avoir suivi votre solution, appuyé sur le bouton SUPPRIMER du dossier de test et recréé la configuration d'exécution, tout allait bien. Astuce supplémentaire: lorsque vous appuyez sur le bouton de suppression du dossier de test, une boîte de dialogue apparaît disant quelque chose comme "aucun fichier ne sera supprimé". Donc pas de crainte d'appuyer sur le bouton.
kleenxcoder
Hey merci Bro, cela a fonctionné pour moi
indrajit narvekar
14

J'ai eu un problème similaire après avoir démarré un nouveau projet IntelliJ. J'ai trouvé que le "chemin de sortie de compilation du module" pour mon module n'était pas correctement spécifié. Quand j'ai assigné le chemin dans le "chemin de sortie de compilation" du module à l'emplacement approprié, le problème a été résolu. Le chemin de sortie de la compilation est attribué dans les paramètres du projet. Sous Modules, sélectionnez le module concerné et sélectionnez l'onglet Chemins ...

Onglet Chemins dans les paramètres du projet | Boîte de dialogue Modules

capture d'écran

... J'ai envoyé la sortie du compilateur dans un dossier nommé "output" qui est présent dans le dossier Project parent.

DStanton
la source
14

Dans mon cas, j'avais tout le reste au bon endroit, mais je travaillais sur une bibliothèque java avec kotlin . J'ai juste oublié d'appliquer le plugin:

apply plugin: 'kotlin-android'

Et maintenant, cela fonctionne comme prévu maintenant.

crgarridos
la source
1
Pareil pour moi. C'est ennuyeux qu'il n'y ait pas d'option Kotlin lors de la création de modules.
Rupert Rawnsley
11

Donc, mon problème ici était avec les noms de dossier. J'avais appelé mon dossier de code Classes 2016/2017, ce qu'IntelliJ n'aimait pas. Supprimez simplement la barre oblique (ou tout autre caractère offensant dans le chemin), réimportez le projet et vous serez prêt à partir!

Arnbobo
la source
Cela m'a aidé. Pour d'autres, j'avais le dossier dans Dropbox. Lorsque je l'ai déplacé hors de Dropbox et réimporté, le problème a disparu.
Mick Sear
Cette réponse mérite un prix Nobel de la paix!
Ali Abbas Jaffri
8

Dans Android Studio 3.0 +, les tests d'interface utilisateur sont parfois interprétés comme des tests unitaires et ne demandent pas de sélection de déploiement cible. Vous pouvez aller à Modifier la configuration et le marquer comme un test d'intégration et cela commencerait à fonctionner

Tushar Nallan
la source
De plus, sur Android Studio 3.0.1, le bouton d'exécution à côté du test ne fonctionne pas. Après la mise à jour vers 3.1 canary 8, il a recommencé à fonctionner.
Marc
6

J'ai eu le même problème et la reconstruction / invalidation du cache, etc. ne fonctionnait pas. On dirait que ce n'est qu'un bogue dans Android Studio ...

Une solution temporaire consiste simplement à exécuter vos tests unitaires à partir de la ligne de commande avec:

./gradlew test

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

Marius
la source
6

Si le projet a un problème de compilation, les tests peuvent ne pas s'exécuter. Donc, commencez par créer le projet en tant que Build -> Build Project. Une fois la compilation réussie, relancez le test.

Si rien ne fonctionne, fermez simplement la fenêtre du projet et supprimez le projet et réimportez-le en tant que projet Gradle / Maven, ce qui définira tout pour vous en remplaçant les fichiers créés par IntelliJ existants. Cela supprimera le cache invalide créé.

Vous pouvez également simplement invalider le cache.

File -> Invalidate Caches/Restart

swapnil
la source
5

J'ai eu la même question lorsque j'en importe jarde Maven, et par la suite, je cause leempty-test-suite erreur.

Dans mon cas, c'était parce que le maven réinitialisait les fichiers du module. Ce que j'ai résolu en effaçant ma configuration par défaut:

  1. Ouvrir la structure du projet avec shift- ctrl- alt- sraccourci

Capture d'écran des sources PModules

  1. Regardez les modules> Sources et remplissez le package Sources ou le package de test.
tyrantqiao
la source
5

Le projet ou le module de réimportation peut résoudre le problème. J'ai créé ce problème en renommant le nom du package lors du développement. Mais le chemin sur et chemin de sortie de test est l'ancien chemin. Donc intellij ne peut pas trouver la classe de l'ancien chemin. Le moyen le plus simple est donc de corriger le chemin de sortie et le chemin de sortie du test.

Réglage du module Intellij

Bejond
la source
Pour une raison quelconque, l'héritage du chemin du projet ne fonctionne pas pour moi sur MacOs, avez-vous une idée de pourquoi cela peut se produire?
Johnny_D
@Johnny_D Êtes-vous sûr que votre problème est dû au changement de nom du package?
Bejond
5

J'ai eu le même problème (Android Studio 3.2 Canary 4) et j'ai essayé la plupart des suggestions décrites dans d'autres réponses - sans aucun succès. Notez que cela s'est produit après avoir déplacé le fichier de testversandroidTest dossier. Il était toujours affiché dans les configurations d'exécution comme test au lieu de test instrumenté.

Je finis par créer un nouveau fichier:

  1. Créez une nouvelle classe de test instrumentée avec un nom différent.
  2. Copiez tout le code de votre classe.
  3. Exécuter.
  4. Supprimez l'ancienne classe.
  5. Renommez la nouvelle classe avec le nom souhaité.
Micer
la source
Pas mauvaise idée =) Merci!
Andrew Grow
5

Fait intéressant, j'ai rencontré ce problème plusieurs fois pour différentes raisons. Par exemple, invalidation du cache et redémarrage ont également aidé.

La dernière fois, je l'ai corrigé en corrigeant mon chemin de sortie dans Fichier -> Structure du projet -> Projet -> Sortie du compilateur de projet vers: chemin_absolu_du_package / out

par exemple: / Users / random-guy / myWorkspace / src / DummyProject / out

un gars au hasard
la source
C'est celui-ci qui a fait fonctionner ma suite de tests! Merci!
Frank
4

La suppression .ideaet la réimportation du projet SBT ont résolu ce problème pour moi.

jhegedus
la source
Cela fonctionne après la suppression du dossier .idea et la réimportation du projet maven (y)
Amine Soumiaa
C'était la même chose pour moi. J'ai parcouru les suggestions ci-dessus mais aucune n'a fonctionné. J'ai supprimé le dossier de base .idea ainsi que les fichiers .iml dans les sous-modules.
Dennis le
3

Cela se produira également lorsque votre module et / ou project-jdk ne sont pas correctement configurés.

Maarten Dhondt
la source
Veuillez clarifier "configuration correcte". Je ne pense pas que cela soit utile pour les utilisateurs avec ce problème. Merci!
oeufs
3

Dans mon cas, IntelliJ n'a pas compilé les sources de test pour une raison étrange. J'ai simplement modifié la configuration de construction et ajouté l'objectif maven clean test-compiledans la Before launchsection

vatbub
la source
J'ai essayé tout ce qui précède, mais cela a aidé :) Merci!
Antenka
2

Dans mon cas, il y avait un problème avec le nom du test :).

Si le nom était: dummyNameTestalors n'obtenez aucun test là où trouvé, mais au cas où testDummyNametout irait bien

Inweo
la source
1

J'ai eu le même problème. Dans mon cas, j'avais des classes de test dans un package / dossier en dehors du dossier principal. Mais quand j'ai vérifié la configuration Run, il essayait toujours de rechercher des classes dans le dossier principal (et non mes packages en dehors de main). Donc, si tel est le cas, vous devez soit déplacer vos packages vers où pointe la configuration Run. Ou modifiez la configuration d'exécution pour qu'elle pointe vers vos packages.

ma clé
la source
1

Votre test nécessite-t-il un appareil Android (émulateur ou matériel)?
Si tel est le cas, il s'appelle un "test instrumenté" et réside dans "nom-module / src / androidTest / java /".
Sinon, il s'appelle un "test unitaire local" et réside dans "nom-module / src / test / java"

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

J'ai eu la même erreur parce que j'avais écrit un test unitaire local, mais il a été placé dans le dossier des tests instrumentés. Déplacer le test de l'unité locale dans le dossier "src / test / java" l'a corrigé pour moi.

Patrick
la source
1

Obtenait la même erreur. Mon appareil n'était pas connecté au studio Android. Quand je me suis connecté au studio. Ça marche. Cela résout mon problème.

Aman Srii
la source
1

C'est probablement parce que le dossier n'est pas défini comme source de test, ce qui peut être fait via Paramètres du module> Modules.

noego
la source
1

Pour moi, le projet a été compilé en dehors du projet. Je change juste de chemin. Pour changer le chemin (j'utilise mac).

  • Allez dans Fichier -> Structure du projet
  • Accédez au module sur le côté gauche.
  • Sélectionnez Chemins, sélectionnez le bouton radio (utilisez le chemin de sortie de compilation du module)
  • Fournissez le chemin de sortie et le chemin de sortie de test qui se trouve à l'intérieur de votre projet
  • Désélectionnez Exclure les chemins de sortie.
  • Allez dans Fichier -> Cliquez sur Invalidate Cache et redémarrez
Mukul Aggarwal
la source
1

Dans mon cas, le problème a été résolu en allant dans mon build.gradleet en changeant

dependencies {
    testImplementation 'junit:junit:4.12'
}

à

dependencies {
    testCompile 'junit:junit:4.12'
}
bremen_matt
la source
Cela m'a aidé aussi, étonnamment. On dirait que cela a forcé une recompilation. J'ai essayé plusieurs nettoyages / cache avant sans aide
Dieter Menne
Pour ce que ça vaut, le problème pour moi a été résolu comme la solution que je propose ci-dessus. Cependant, la raison était que j'utilisais un plugin qui ne supportait pas la commande 'implementation'. Je suggérerais donc que vous souhaitiez voir si certains des plugins de votre projet ont également des mises à jour. Peut-être qu'une meilleure approche serait de mettre à jour le plugin puisque Gradle veut désapprouver la commande "compile"
bremen_matt
1

J'ai essayé toutes les solutions mais aucune n'a aidé. À la fin, j'exécute le test en mode débogage et .... cela a commencé à fonctionner. Peut-être que la cache d'un maven a été nettoyée. C'est difficile à dire. Ça marche. Essayermvn test -X

radekpakula
la source
1

Cliquez simplement sur le bouton droit de votre souris sur le fichier dans la fenêtre Projets et sélectionnez

"Exécutez votre test ".

Tout commence maintenant correctement, probablement parce qu'une configuration d'exécution défectueuse est en cours de reconstruction.

WebComer
la source
1

Cela peut arriver (au moins une fois pour moi;) après l'installation de la nouvelle version d'IntelliJ et les plugins IntelliJ ne sont pas encore mis à jour.

Vous devrez peut-être effectuer manuellement le Check for updates…menu Aide IntelliJ.

Peter Lamberg
la source
1

Dans la structure de votre projet Maven src / main / java, faites un clic droit sur le répertoire java et sélectionnez l'option Marquer le répertoire comme -> Racine des sources

De même, faites de même avec le répertoire de test: src / test / java faites un clic droit sur le répertoire java et sélectionnez l'option Marquer le répertoire comme -> Racine des sources de test

A travaillé pour moi :-)

Monsieur Personne
la source
1

suivez les étapes ci-dessous dans Intellij (avec des captures d'écran pour une meilleure compréhension):

  1. allez dans Fichiers -> Structure du projet

entrez la description de l'image ici

  1. naviguez vers les modules et sélectionnez maintenant le module dans lequel votre fichier de test Junit est présent et sélectionnez le bouton radio "Utiliser le chemin de sortie de compilation du module".

  2. Mentionnez le chemin du dossier des classes respectives, semblable à la capture d'écran ci-jointe.

entrez la description de l'image ici

  1. Appliquez et d'accord. Cela a fonctionné pour moi!
Jangli_coder
la source
0

Même problème ici en utilisant IDEA 15.0.6, et rien n'a aidé sauf lorsque j'ai renommé le package dans lequel se trouvait la classe de test. Ensuite, je l'ai renommé à son nom d'origine et cela fonctionnait toujours, donc l'action de changement de nom aurait pu effacer une partie du cache.

Alexander Klimetschek
la source