Classe non trovata: suite di test vuota in IntelliJ


183

Ho appena iniziato il programma di informatica al mio college e sto riscontrando alcuni problemi con IntelliJ. Quando provo ad eseguire unit test, ricevo il messaggio

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

Vedo anche un messaggio intitolato "Nessun test trovato" sul lato sinistro del mio schermo. Il mio codice di prova è qui:

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

E il mio codice di progetto è qui:

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

}

Come posso far funzionare i miei test? Sto usando la versione più recente di IntelliJ IDEA CE.


8
Così tante cose possono andare storte. Per me, è stato semplice come scrivere mvn clean packagenel terminale. Non so perché IntelliJ abbia importato il progetto in modo errato all'inizio.
MarkHu

1
Per me basta creare la cartella come "radice delle risorse di prova" ...
Xin Meng


Build -> Clean and Build -> Rebuild è stato abbastanza per me.
gustavoknz,

Risposte:


109

Aveva lo stesso messaggio. Ho dovuto rimuovere la configurazione Run / Debug.

Nel mio caso, ho eseguito il test unitario come test locale prima. Successivamente ho spostato il mio test nel pacchetto androidTest e ho provato a eseguirlo di nuovo. Android Studio ha ricordato la configurazione dell'ultima esecuzione, quindi ha tentato di eseguirla nuovamente come test di unità locale che ha prodotto lo stesso errore.

Dopo aver rimosso la configurazione ed eseguito nuovamente il test, ha generato una nuova configurazione e ha funzionato.

inserisci qui la descrizione dell'immagine


Penso che nella maggior parte dei casi la tua soluzione sarebbe la più universale e la meno magica. Ha lavorato nel mio progetto come un incantesimo.
ba3a,

L'ho provato ma non ha funzionato da solo. Ho anche dovuto invalidare gli incassi. File > Cashes / Restart
Lukasz,

L'ho provato e ho anche invalidato gli incassi. Ma ancora non funziona.
ali il

Questo ha funzionato per me dopo che mi sono ricordato di fare clic sul pulsante ok ovvio invece di chiudere semplicemente la finestra di dialogo :-)
rimsky

Non vedo alcuna voce "Runner di strumentazione specifica" nel mio Android Studio.
David,


49

Ho avuto lo stesso problema. Ho ricostruito il progetto e mi ha aiutato.

Vai a Build -> Rebuild Project

Successivamente, se si utilizza lo strumento Maven, si consiglia di utilizzare l'opzione Reimporta tutti i progetti Maven


Se non aiuta, prova un'altra possibile soluzione:

  • Vai a File -> Cache non valide / Riavvia -> Non valido e riavvia

o:

  • Nella struttura del progetto Maven src / main / java fare clic con il tasto destro del mouse sulla directory java e selezionare l'opzione Segna directory come -> Sorgenti radice

    Fare lo stesso con la directory test quindi: src / test / java fare clic con il tasto destro del mouse sulla directory java e selezionare l'opzione Contrassegna directory come -> Test origini radice

o:

  • Vai su Esegui -> Modifica configurazioni e nella sezione JUnit rimuovi le configurazioni di prova. Applica i cambiamenti. Dopo, prova a eseguire i test. La nuova configurazione dovrebbe essere creata automaticamente.

o:

  • Vai a File -> Struttura del progetto , seleziona Moduli , quindi seleziona il modulo corretto e vai alla scheda Percorsi .
    Controllare le opzioni:
    Pulsante di opzione Usa il percorso di compilazione del modulo compilato dovrebbe essere selezionato.

    Il percorso di output dovrebbe essere all'interno del progetto. Inoltre , il percorso di output del test deve essere una directory all'interno del progetto. Ad esempio, può avere un aspetto simile:
    Percorso di output: C: \ path \ to \ your \ module \ yourModule \ target \ classes
    Percorso di output del test: C: \ path \ to \ your \ module \ yourModule \ target \ test-classes

    Escludi output i percorsi devono essere deselezionati.

10
Ricostruire il progetto ( Build -> Rebuild Project) è stato ciò che ha funzionato per me. Grazie!
Francisco C.

Questa soluzione ha funzionato per me, l'ultima cosa sui moduli e sull'utilizzo di un percorso di output. Grazie.
Mohammad Ganji,

Come soluzione più disperata, eliminare il file .idea e riaprire il progetto. Perderai alcune configurazioni / impostazioni, tuttavia.
Aaron,

Impostazione <project-root>/src/test/javacome test root, e ha Build -> Rebuild Projectfunzionato per me. Inoltre, quando le classi contenenti i test erano nel pacchetto con il nome del pacchetto che iniziava java.*, ho ricevuto Eccezione di sicurezza.
Master Chief

Il problema è che le dipendenze erano obsolete
dellasavia

17

Ciò può accadere anche se la cartella di test è stata importata come modulo separato (un quadratino viene mostrato sull'icona della cartella nella vista del progetto).
Rimuovere il modulo selezionando la cartella test nella vista progetto e premere DEL.
Quindi avviare il test.
Se viene visualizzata una finestra di dialogo popup con un messaggio di errore, non è stato selezionato alcun modulo, specificare il modulo radice dal menu a discesa.


3
Anche questo era il mio problema (piazza sulla cartella test - non avrei saputo cosa significasse!); per risolvere, ho aperto la configurazione di esecuzione e ho scoperto che "Usa percorso di classe del modulo:" era impostato sul modulo di test. L'ho cambiato nel percorso di classe del mio progetto, e ha funzionato bene. Grazie per aver sottolineato il gotcha "modulo separato"!
Redboots il

Questo è esattamente quello che mi è successo. Ho creato un progetto Spring usando start.spring.io e l'ho aperto. Successivamente ho avviato SpringBootTest e ho riscontrato l'errore "Classe non trovata:" ... "Suite di test vuota". Dopo aver seguito la soluzione e aver premuto il pulsante CANC sulla cartella test e ricreato la configurazione di esecuzione, tutto è andato bene. Suggerimento aggiuntivo: quando si preme il pulsante Elimina sulla cartella di prova, viene visualizzata una finestra di dialogo che dice qualcosa del tipo "nessun file verrà eliminato". Quindi nessuna paura premendo il pulsante.
Kleenxcoder,

14

Ho avuto un problema simile dopo aver avviato un nuovo progetto IntelliJ. Ho scoperto che il "percorso di output della compilazione del modulo" per il mio modulo non è stato specificato correttamente. Quando ho assegnato il percorso nel "percorso di output della compilazione" del modulo nella posizione corretta, il problema è stato risolto. Il percorso di output della compilazione è assegnato nelle impostazioni del Progetto. In Moduli, seleziona il modulo interessato e seleziona la scheda Percorsi ...

Scheda Percorsi in Impostazioni progetto | Finestra di dialogo dei moduli

immagine dello schermo

... Ho inviato l'output del compilatore a una cartella denominata "output" presente nella cartella del progetto padre.


14

Nel mio caso, avevo tutto il resto nel posto giusto, ma stavo lavorando su una libreria Java con Kotlin . Ho appena dimenticato di applicare il plug-in:

apply plugin: 'kotlin-android'

E ora funziona come previsto ora.


1
Stessa cosa per me. È fastidioso che non ci sia alcuna opzione Kotlin durante la creazione di moduli.
Rupert Rawnsley,

11

Quindi, il mio problema qui era con i nomi delle cartelle. Avevo chiamato la mia cartella di codice Classi 2016/2017, che a IntelliJ non piaceva. Rimuovi semplicemente la barra (o un altro personaggio offensivo nel percorso), reimporta il progetto e sarai a posto!


Questo mi ha aiutato. Per altri, avevo la cartella in Dropbox. Quando l'ho spostato da Dropbox e reimportato, il problema è scomparso.
Mick Sear,

Questa risposta merita un premio nobel per la pace!
Ali Abbas Jaffri,

7

In Android Studio 3.0 +, a volte i test dell'interfaccia utente sono in qualche modo interpretati come test unitari e non richiedono la selezione della distribuzione di destinazione. Puoi andare su Modifica configurazione e contrassegnarlo come test di integrazione e inizierà a funzionare


Inoltre, su Android Studio 3.0.1 il pulsante Esegui accanto al test non funziona. Dopo l'aggiornamento a 3.1 canary 8 ha ripreso a funzionare.
Marc


6

Se il progetto presenta problemi di compilazione, i test potrebbero non essere eseguiti. Quindi in primo luogo compilare un progetto come Build -> Build Project. Dopo aver compilato correttamente rieseguire il test.

Se non funziona nulla, basta chiudere la finestra del progetto ed eliminare il progetto e reimportarlo come progetto Gradle / Maven che imposterà tutto per te sovrascrivendo i file esistenti creati da IntelliJ. In questo modo verrà rimossa la cache non valida creata.

Puoi anche solo invalidare la cache.

File -> Invalidate Caches/Restart


5

Ho avuto la stessa domanda quando ho importato alcuni jarda Maven e, successivamente, ho causato l' empty-test-suiteerrore.

Nel mio caso, è stato perché la maven ha resettato i file del modulo. Che ho risolto cancellando la mia configurazione predefinita:

  1. Apri la struttura del progetto con shift- ctrl- alt- sscorciatoia

Schermata delle fonti di PModules

  1. Guarda i moduli> Sorgenti e compila il pacchetto Sorgenti o il pacchetto di test.

5

Il progetto o il modulo Reimport può risolvere il problema. Ho risolto questo problema rinominando il nome del pacchetto durante lo sviluppo. Ma il percorso fuori e percorso di uscita di test è il vecchio sentiero. Quindi intellij non riesce a trovare la classe dal vecchio percorso. Quindi il modo più semplice è correggere il percorso di uscita e testare il percorso di uscita.

Impostazione del modulo Intellij


Per qualche ragione il percorso del progetto ereditato non funziona per me su MacOs, hai qualche idea sul perché possa accadere?
Johnny_D,

@Johnny_D Sei sicuro che il tuo problema sia dovuto alla ridenominazione del pacchetto?
Bejond,

5

Ho avuto lo stesso problema (Android Studio 3.2 Canary 4) e ho provato la maggior parte dei suggerimenti descritti in altre risposte - senza successo. Nota che questo è successo dopo che ho spostato il file testnella androidTestcartella. È stato ancora mostrato nelle configurazioni di esecuzione come test anziché come test strumentato.

Finalmente con la creazione di un nuovo file:

  1. Crea una nuova classe di test strumentata con un nome diverso.
  2. Copia tutto il codice dalla tua classe.
  3. Eseguirlo.
  4. Elimina la vecchia classe.
  5. Rinomina nuova classe con il nome desiderato.

Non male idea =) Grazie!
Andrew Grow,

5

È interessante notare che ho affrontato questo problema molte volte a causa di diversi motivi. Ad esempio, anche l' invalidazione della cache e il riavvio hanno aiutato.

L'ultimo l'ho corretto correggendo il mio percorso di output in File -> Struttura del progetto -> Progetto -> Output del compilatore di progetto in: absolute_path_of_package / out

per esempio: / Users / random-guy / myWorkspace / src / DummyProject / out


È questo che ha fatto funzionare la mia suite di test! Grazie!
Frank,

3

Questo accadrà anche quando il tuo modulo e / o project-jdk non sono configurati correttamente.


Si prega di chiarire "corretta configurazione" Non penso che questo sia utile per gli utenti con questo problema. Grazie!
Eggmatters

3

L'eliminazione .ideae la reimportazione del progetto SBT hanno risolto questo problema per me.


Funziona dopo aver eliminato la cartella .idea e reimportato il progetto
maven

Questo è stato lo stesso per me. Ho seguito i suggerimenti sopra ma nessuno ha funzionato. Ho eliminato la cartella di base .idea e anche i file .iml nei sottomoduli.
Dennis,

3

Nel mio caso, IntelliJ non ha compilato le fonti del test per una strana ragione. Ho semplicemente modificato la configurazione della build e aggiunto l'obiettivo maven clean test-compilenella Before launchsezione


Ho provato tutto quanto sopra, ma solo questo ha aiutato :) Grazie!
Antenka,

2

Nel mio caso si è verificato un problema con il nome del test :).

Se il nome era: dummyNameTestquindi non ottenere test dove trovato, ma nel caso testDummyNametutto fosse ok


1

Ho avuto lo stesso problema. Nel mio caso ho avuto alcune lezioni di prova in un pacchetto / cartella al di fuori della cartella principale. Ma quando ho controllato la configurazione Esegui, cercavo sempre di cercare le classi all'interno della cartella principale (e non i miei pacchetti al di fuori di main). Quindi, in tal caso, è necessario spostare i pacchetti nel punto indicato dalla configurazione di esecuzione. Oppure modifica la configurazione della corsa in modo che punti ai tuoi pacchetti.


1

Il tuo test richiede un dispositivo Android (emulatore o hardware)?
In tal caso, si chiama "test strumentato" e risiede in "nome-modulo / src / androidTest / java /".
In caso contrario, si chiama "test dell'unità locale" e risiede in "nome-modulo / src / test / java"

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

Ho avuto lo stesso errore perché avevo scritto un test di unità locale, ma è stato inserito nella cartella per i test strumentati. Lo spostamento del test dell'unità locale nella cartella "src / test / java" lo ha risolto per me.


1

Stava ottenendo lo stesso errore. Il mio dispositivo non era collegato a Android Studio. Quando mi sono collegato allo studio. Funziona. Questo risolve il mio problema.


1

Probabilmente è perché la cartella non è impostata come sorgente di test, cosa che può essere fatta tramite Impostazioni modulo> Moduli.


1

Per me il progetto è stato compilato al di fuori del progetto. Ho appena cambiato il percorso. Per cambiare il percorso (sto usando mac).

  • Vai a File -> Struttura del progetto
  • Vai al modulo sul lato sinistro.
  • Seleziona percorsi, seleziona il pulsante di opzione (usa il modulo compila il percorso di output)
  • Fornire il percorso di output e il percorso di output di test all'interno del progetto
  • Deseleziona Escludi percorsi di output.
  • Vai a File -> Fai clic su Cache non valida e riavvia

1

Nel mio caso, il problema è stato risolto andando nel mio build.gradlee cambiando

dependencies {
    testImplementation 'junit:junit:4.12'
}

per

dependencies {
    testCompile 'junit:junit:4.12'
}

Ciò ha aiutato anche a me, sorprendentemente. Sembra che abbia costretto una ricompilazione. Ho provato diverse operazioni di pulizia / cache prima senza aiuto
Dieter Menne l'

Per quello che vale, il problema per me è stato risolto come la soluzione che propongo sopra. Tuttavia, la ragione era che stavo usando un plugin che non supportava il comando 'implementazione'. Quindi suggerirei che potresti voler vedere se anche alcuni plugin del tuo progetto hanno aggiornamenti. Forse un approccio migliore sarebbe quello di aggiornare il plugin poiché Gradle vuole deprecare il comando "compile"
bremen_matt

1

Ho provato tutte le soluzioni ma nessuna di queste ha aiutato. Alla fine eseguo il test in modalità debug e .... ha iniziato a funzionare. Forse un po 'di cache di Maven è stata svuotata. E 'difficile da dire. Funziona. Provaremvn test -X


1

Basta fare clic con il tasto destro del mouse sul file nella finestra Progetti e selezionare

"Esegui il tuo test ".

Ora tutto inizia bene, probabilmente perché la configurazione della corsa difettosa viene ricostruita di nuovo.


1

Questo può accadere (almeno una volta per me;) dopo l'installazione della nuova versione di IntelliJ e i plug-in IntelliJ non sono ancora stati aggiornati.

Potrebbe essere necessario eseguire manualmente Check for updates…dal menu Guida di IntelliJ.


1

Nella struttura del progetto Maven src / main / java, fai clic con il pulsante destro del mouse sulla directory java e seleziona l'opzione Segna directory come -> Sources Root

Allo stesso modo, fare lo stesso con la directory di test, quindi: src / test / java fare clic con il tasto destro sulla directory java e selezionare l'opzione Contrassegna directory come -> Test origini radice

Ha funzionato per me :-)


1

seguire i passaggi seguenti in Intellij (con schermate per una migliore comprensione):

  1. vai su File -> Struttura del progetto

inserisci qui la descrizione dell'immagine

  1. passare ai moduli e ora selezionare il modulo in cui è presente il file di test Junit e selezionare il pulsante di opzione "Utilizza percorso di compilazione modulo".

  2. Indica il percorso della cartella delle rispettive classi, simile allo screenshot allegato.

inserisci qui la descrizione dell'immagine

  1. Fare domanda e va bene. Questo ha funzionato per me!

0

Stesso problema qui usando IDEA 15.0.6 e nulla ha aiutato tranne quando ho rinominato il pacchetto in cui si trovava la classe test. Successivamente l'ho rinominato con il nome originale e ha funzionato ancora, quindi l'azione di rinomina potrebbe aver cancellato un po 'di cache.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.