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.