Klasa nie znaleziona: pusty pakiet testowy w IntelliJ


183

Właśnie zaczynam program informatyczny na studiach i mam pewne problemy z IntelliJ. Gdy próbuję uruchomić testy jednostkowe, pojawia się komunikat

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

Widzę także komunikat zatytułowany „Nie znaleziono testów” po lewej stronie ekranu. Mój kod testowy jest tutaj:

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

A mój kod projektu jest tutaj:

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

}

Jak mogę uruchomić testy? Korzystam z najnowszej wersji IntelliJ IDEA CE.


7
Tak wiele rzeczy może pójść nie tak. Dla mnie było to tak proste, jak pisanie mvn clean packagew terminalu. Nie wiem, dlaczego IntelliJ na początku zaimportował projekt nieprawidłowo.
— MarkHu

1
Dla mnie po prostu utwórz folder jako „testowy katalog główny zasobów” ...
— Xin Meng


Build -> Clean and Build -> Rebuild wystarczyło mi.
— gustavoknz

Odpowiedzi:


109

Miałem tę samą wiadomość. Musiałem usunąć konfigurację Run / Debug.

W moim przypadku wcześniej przeprowadziłem test jednostkowy jako test lokalny. Następnie przeniosłem mój test do pakietu androidTest i próbowałem go uruchomić ponownie. Android Studio zapamiętało ostatnią konfigurację uruchomienia, więc próbowało uruchomić ją ponownie jako test jednostki lokalnej, który spowodował ten sam błąd.

Po usunięciu konfiguracji i ponownym uruchomieniu testu wygenerowała nową konfigurację i działała.

wprowadź opis zdjęcia tutaj


Myślę, że w większości przypadków twoje rozwiązanie byłoby najbardziej uniwersalne i najmniej magiczne. W moim projekcie działał jak urok.
— ba3a,

Próbowałem, ale nie działało samo z siebie. Musiałem także unieważnić kasy. File > Cashes / Restart
— Łukasz

Próbowałem, a także unieważniłem kasę. Ale nadal nie działa.
— skrzydła

To zadziałało dla mnie po tym, jak przypomniałem sobie, aby kliknąć oczywisty przycisk OK zamiast po prostu zamknąć okno dialogowe :-)
— rimsky

W moim Android Studio nie widzę żadnego wpisu „Określony biegacz instrumentacji”.
— David


49

Miałem ten sam problem. Odbudowałem projekt i to mi pomogło.

Przejdź do Kompilacja -> Przebuduj projekt

Następnie, jeśli korzystasz z narzędzia Maven, polecam skorzystać z opcji Reimportuj wszystkie projekty Maven


Jeśli to nie pomoże, wypróbuj inne możliwe rozwiązania:

  • Przejdź do Plik -> Unieważnij pamięć podręczną / Uruchom ponownie -> Unieważnij i uruchom ponownie

lub:

  • W strukturze projektu Maven src / main / java kliknij prawym przyciskiem myszy katalog java i wybierz opcję Oznacz katalog jako -> Źródła root

    Zrób to samo z katalogiem testowym, więc: src / test / java kliknij prawym przyciskiem myszy katalog java i wybierz opcję Oznacz katalog as -> Testuj źródła Root

lub:

  • Przejdź do Uruchom -> Edytuj konfiguracje iw sekcji JUnit usuń konfiguracje testowe. Zatwierdź zmiany. Następnie spróbuj uruchomić testy. Nowa konfiguracja powinna zostać utworzona automatycznie.

lub:

  • Przejdź do Plik -> Struktura projektu , wybierz Moduły , następnie wybierz odpowiedni moduł i przejdź do zakładki Ścieżki .
    Sprawdź opcje:
    Przycisk opcji Należy wybrać ścieżkę wyjściową kompilacji modułu .

    Ścieżka wyjściowa powinna znajdować się w twoim projekcie. Również ścieżka wyjściowa testowy powinien być katalog wewnątrz projektu. Na przykład może wyglądać podobnie:
    Ścieżka wyjściowa: C: \ ścieżka \ do \ twój \ moduł \ twójModuł \ cel \ klas
    Test Ścieżka wyjściowa: C: \ ścieżka \ do \ twój \ moduł \ twójModuł \ cel \ klasy testowe

    Wyklucz wyjście ścieżki powinny być odznaczone.

10
Przebudowałem projekt ( Build -> Rebuild Project), co działało dla mnie. Dziękuję Ci!
— Francisco C.

To rozwiązanie działało dla mnie, ostatnia rzecz dotycząca modułów i korzystania ze ścieżki wyjściowej. Dzięki.
— Mohammad Ganji,

Jako bardziej desperackie rozwiązanie, usuń plik .idea i ponownie otwórz projekt. Utracisz jednak trochę konfiguracji / ustawień.
— Aaron,

Ustawienie <project-root>/src/test/javajako testowy root i Build -> Rebuild Projectzadziałało dla mnie. Również gdy klasy zawierające testy były w pakiecie z nazwą pakietu zaczynającą się od java.*, otrzymałem wyjątek bezpieczeństwa.
— Master Chief

Problem polega na tym, że zależności były przestarzałe
— dellasavia

17

Może się tak również zdarzyć, jeśli folder testowy został zaimportowany jako osobny moduł (na ikonie folderu w widoku projektu widoczny jest mały kwadrat).
Usuń moduł, wybierając folder testowy w widoku projektu i naciśnij DEL.
Następnie rozpocznij test.
Jeśli pojawi się wyskakujące okno dialogowe z komunikatem o błędzie, że nie wybrano żadnego modułu, określ moduł główny z menu rozwijanego.


3
To też był mój problem (kwadrat na folderze testowym - nie wiedziałbym, co to znaczy!); aby to naprawić, otworzyłem konfigurację uruchamiania i stwierdziłem, że „Użyj ścieżki klasy modułu:” ustawiono na moduł testowy. Zamiast tego zmieniłem go na ścieżkę klasową mojego projektu i działało dobrze. Dzięki za wskazanie gotcha „osobnego modułu”!
— Redboots

To właśnie mi się przydarzyło. Stworzyłem projekt Spring przy użyciu start.spring.io i otworzyłem go. Następnie rozpocząłem SpringBootTest i natknąłem się na błąd „Nie znaleziono klasy:” ... „Pusty pakiet testowy”. Po skorzystaniu z rozwiązania i naciśnięciu przycisku DELETE na folderze testowym i ponownym uruchomieniu konfiguracji uruchamiania wszystko było w porządku. Dodatkowa wskazówka: po naciśnięciu przycisku usuwania w folderze testowym pojawia się okno dialogowe z napisem „żadne pliki nie zostaną usunięte”. Więc nie bój się, naciskając przycisk.
— kleenxcoder

14

Miałem podobny problem po rozpoczęciu nowego projektu IntelliJ. Odkryłem, że „ścieżka wyjściowa kompilacji modułu” dla mojego modułu nie została poprawnie określona. Kiedy przypisałem ścieżkę w „ścieżce wyjściowej kompilacji” modułu do właściwej lokalizacji, problem został rozwiązany. Ścieżka wyjściowa kompilacji jest przypisana w ustawieniach projektu. W obszarze Moduły wybierz zaangażowany moduł i wybierz kartę Ścieżki ...

Karta Ścieżki w Ustawieniach projektu | Okno dialogowe modułów

zrzut ekranu

... Wysłałem dane wyjściowe kompilatora do folderu o nazwie „dane wyjściowe”, który znajduje się w nadrzędnym folderze projektu.


14

W moim przypadku miałem wszystko inne we właściwym miejscu, ale pracowałem nad biblioteką Java z kotlin . Właśnie zapomniałem zastosować wtyczkę:

apply plugin: 'kotlin-android'

A teraz działa zgodnie z oczekiwaniami.


1
Dla mnie to samo. To denerwujące, że podczas tworzenia modułów nie ma opcji Kotlin.
— Rupert Rawnsley

11

Mój problem dotyczył tutaj nazw folderów. Nazwałem mój folder kodu Klasy 2016/2017, który nie podobał się IntelliJ. Wystarczy usunąć ukośnik (lub inną obrażającą postać na ścieżce), ponownie zaimportować projekt, a będziesz gotowy!


To mi pomogło. Dla innych miałem folder w Dropbox. Gdy wyprowadziłem go z Dropbox i ponownie zaimportowałem, problem zniknął.
— Mick Sear

Ta odpowiedź zasługuje na pokojową nagrodę Nobla!
— Ali Abbas Jaffri

7

W Android Studio 3.0 + czasami testy interfejsu użytkownika są w jakiś sposób interpretowane jako testy jednostkowe i nie wymagają wyboru docelowego wdrożenia. Możesz przejść do Edytuj konfigurację i oznaczyć go jako test integracji, a on zacznie działać


Ponadto w Android Studio 3.0.1 przycisk uruchamiania obok testu nie działa. Po aktualizacji do wersji 3.1 kanarka 8 znów zaczął działać.
— Marc


6

Jeśli w projekcie występuje problem z kompilacją, testy mogą się nie uruchomić. Najpierw zbuduj projekt jako Build -> Build Project. Po udanej kompilacji ponownie uruchom test.

Jeśli nic nie działa, po prostu zamknij okno projektu i usuń projekt i ponownie zaimportuj jako projekt Gradle / Maven, który ustawi wszystko dla Ciebie, zastępując istniejące pliki utworzone przez IntelliJ. Spowoduje to usunięcie utworzonej nieprawidłowej pamięci podręcznej.

Możesz także po prostu unieważnić pamięć podręczną.

File -> Invalidate Caches/Restart


5

Miałem to samo pytanie, kiedy importowałem niektóre jarz Maven, a następnie powodowałem empty-test-suitebłąd.

W moim przypadku było tak dlatego, że maven zresetował pliki modułów. Rozwiązane przez wyczyszczenie mojej domyślnej konfiguracji:

  1. Otwórz strukturę projektu za pomocą skrótu shift- ctrl- alt-s

Zrzut ekranu źródeł PModules

  1. Spójrz na Moduły> Źródła i wypełnij pakiet Źródła lub przetestuj Pakiet.

5

Reimportuj projekt lub moduł może rozwiązać problem. Zrobiłem ten problem, zmieniając nazwę pakietu podczas programowania. Ale droga na zewnątrz i ścieżka wyjścia testowego jest stara droga. Więc intellij nie może znaleźć klasy ze starej ścieżki. Zatem najprostszym sposobem jest poprawienie ścieżki wyjściowej i ścieżki wyjściowej testu.

Ustawienia modułu Intellij


Z jakiegoś powodu dziedziczona ścieżka projektu nie działa dla mnie na MacO, czy masz jakieś pomysły, dlaczego tak się dzieje?
— Johnny_D

@Johnny_D Czy na pewno przyczyną Twojego problemu jest zmiana nazwy pakietu?
— Bejond

5

Miałem ten sam problem (Android Studio 3.2 Canary 4) i wypróbowałem większość sugestii opisanych w innych odpowiedziach - bez powodzenia. Uwaga: stało się to po przeniesieniu pliku z testdoandroidTest folderu. Nadal był pokazywany w konfiguracjach przebiegu jako test zamiast testu instrumentalnego.

W końcu kończę tworzenie nowego pliku:

  1. Utwórz nową instrumentalną klasę testową o innej nazwie.
  2. Skopiuj cały kod ze swojej klasy.
  3. Uruchom.
  4. Usuń starą klasę.
  5. Zmień nazwę nowej klasy na pożądaną nazwę.

Niezły pomysł =) Dzięki!
— Andrew Grow

5

Co ciekawe, miałem do czynienia z tym problemem wiele razy z różnych powodów. Na przykład unieważnienie pamięci podręcznej i ponowne uruchomienie pomogło również .

Ostatnio to naprawiłem, poprawiając ścieżkę wyjściową w Plik -> Struktura projektu -> Projekt -> Dane wyjściowe kompilatora projektu na: ścieżka_ absolutna_pakietu / wyjście

na przykład: / Users / random-guy / myWorkspace / src / DummyProject / out


To ten uruchomił mój zestaw testów! Dzięki!
— Frank

3

Stanie się tak również wtedy, gdy twój moduł i / lub projekt-jdk nie zostaną poprawnie skonfigurowane.


Wyjaśnij „właściwą konfigurację”. Nie sądzę, aby było to pomocne dla użytkowników z tym problemem. Dzięki!
— eggmatters

3

Usunięcie .ideai ponowne zaimportowanie projektu SBT rozwiązało dla mnie ten problem.


Działa po usunięciu folderu .idea i ponownym zaimportowaniu projektu maven (y)
— Amine Soumiaa

To było dla mnie to samo. Przejrzałem powyższe sugestie, ale żadne nie zadziałało. Usunąłem podstawowy folder .idea, a także pliki .iml w submodułach.
— Dennis

3

W moim przypadku IntelliJ nie skompilował źródeł testowych z dziwnego powodu. Po prostu zmodyfikowałem konfigurację kompilacji i dodałem cel maven clean test-compilew Before launchsekcji


Próbowałem wszystkich powyższych, ale tylko to pomogło :) Dziękuję!
— Antenka

2

W moim przypadku wystąpił problem z nazwą testu :).

Jeśli nazwa brzmiała: dummyNameTestnie uzyskaj żadnych testów, ale jeśli testDummyNamewszystko było w porządku


1

Miałem ten sam problem. W moim przypadku miałem kilka klas testowych w pakiecie / folderze poza głównym folderem. Ale kiedy sprawdziłem konfigurację Run, zawsze starałem się szukać klas w głównym folderze (a nie moich pakietów poza głównym). W takim przypadku musisz przenieść pakiety do miejsca, w którym wskazuje konfiguracja Uruchom. Lub zmień konfigurację uruchamiania, aby wskazywała na twoje pakiety.


1

Czy Twój test wymaga urządzenia z Androidem (emulatora lub sprzętu)?
Jeśli tak, nazywa się to „testem instrumentalnym” i znajduje się w „module-name / src / androidTest / java /”.
Jeśli nie, nazywa się to „testem jednostki lokalnej” i znajduje się w „module-name / src / test / java”

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

Wystąpił ten sam błąd, ponieważ napisałem test jednostki lokalnej, ale został on umieszczony w folderze do testów instrumentalnych. Przeniesienie testu jednostki lokalnej do folderu „src / test / java” naprawiło to dla mnie.


1

Otrzymywał ten sam błąd. Moje urządzenie nie było podłączone do studia Android. Kiedy podłączyłem się do studia. To działa. To rozwiązuje mój problem.


1

Jest tak prawdopodobnie dlatego, że folder nie jest ustawiony jako źródło testowe, co można zrobić za pomocą Ustawienia modułu> Moduły.


1

Dla mnie projekt został skompilowany poza projektem. Po prostu zmieniam ścieżkę. Do zmiany ścieżki (używam Maca).

  • Przejdź do Plik -> Struktura projektu
  • Przejdź do modułu po lewej stronie.
  • Wybierz ścieżki, wybierz przycisk opcji (użyj ścieżki wyjściowej kompilacji modułu)
  • Podaj ścieżkę wyjściową i Testuj ścieżkę wyjściową, która znajduje się w twoim projekcie
  • Odznacz opcję Wyklucz ścieżki wyjściowe.
  • Przejdź do Plik -> Kliknij opcję Unieważnij pamięć podręczną i uruchom ponownie

1

W moim przypadku problem został rozwiązany poprzez przejście do mojego build.gradlei zmianę

dependencies {
    testImplementation 'junit:junit:4.12'
}

do

dependencies {
    testCompile 'junit:junit:4.12'
}

Co zaskakujące, pomogło mi to. Wygląda na to, że wymusiło to rekompilację. Próbowałem wcześniej kilka porządków / pamięci podręcznej bez pomocy
— Dieter Menne,

Dla tego, co jest warte, problem został dla mnie naprawiony, podobnie jak rozwiązanie, które proponuję powyżej. Powodem było jednak to, że korzystałem z wtyczki, która nie obsługiwała polecenia „Implementacja”. Proponuję więc sprawdzić, czy niektóre wtyczki twojego projektu również zawierają aktualizacje. Być może lepszym rozwiązaniem byłoby zaktualizowanie wtyczki, ponieważ Gradle chce
— wycofać

1

Wypróbowałem wszystkie rozwiązania, ale żadne z nich nie pomogło. Na koniec uruchamiam test w trybie debugowania i .... zaczął działać. Może pamięć podręczna jakiegoś raju została wyczyszczona. Trudno powiedzieć. To działa. Próbowaćmvn test -X


1

Po prostu kliknij prawym przyciskiem myszy plik w oknie projektów i wybierz

„Uruchom swój test ”.

Wszystko zaczyna się teraz OK, prawdopodobnie dlatego, że błędna konfiguracja uruchamiania jest odbudowywana od nowa.


1

Może się to zdarzyć (przynajmniej raz dla mnie;) po zainstalowaniu nowej wersji IntelliJ i wtyczek IntelliJ nie zostało jeszcze zaktualizowanych.

Może być konieczne ręczne wykonanie Check for updates…z menu Pomoc IntelliJ.


1

W strukturze projektu Maven src / main / java kliknij prawym przyciskiem myszy katalog java i wybierz opcję Oznacz katalog jako -> Źródłowy katalog główny

Podobnie zrobić to samo z katalogiem testowym, więc: src / test / java kliknij prawym przyciskiem myszy katalog java i wybierz opcję Oznacz katalog jako -> Katalog źródeł źródłowych

Pracował dla mnie :-)


1

wykonaj poniższe kroki w Intellij (ze zrzutami ekranu dla lepszego zrozumienia):

  1. przejdź do Pliki -> Struktura projektu

wprowadź opis zdjęcia tutaj

  1. przejdź do modułów, a następnie wybierz moduł, w którym znajduje się plik testowy Junit, i wybierz przycisk opcji „Użyj ścieżki wyjściowej kompilacji modułu”.

  2. Podaj ścieżkę do folderu odpowiednich klas, podobną do dołączonego zrzutu ekranu.

wprowadź opis zdjęcia tutaj

  1. Złóż wniosek i dobrze. To zadziałało dla mnie!

0

Ten sam problem tutaj przy użyciu IDEA 15.0.6 i nic nie pomogło, poza tym, kiedy zmieniłem nazwę pakietu, w którym znajdowała się klasa testowa. Potem zmieniłem nazwę z powrotem na pierwotną nazwę i nadal działało, więc akcja zmiany nazwy mogła wyczyścić pamięć podręczną.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.