Uruchom testy jednostkowe w IntelliJ IDEA z wielu modułów razem

85

Jak mogę uruchomić wszystkie testy z dwóch lub więcej modułów IDEA jednocześnie?

Używam wielu modułów i ważne jest, aby często przeprowadzać wszystkie testy jednostkowe, a kiedy wybieram więcej niż jeden folder do uruchomienia, nie ma już opcji „uruchom” w menu kontekstowym.

Wojtek Erbetowski
źródło

Odpowiedzi:

113

Najlepszy sposób: (edytuj po 3 latach)

Jest jeszcze lepszy sposób na osiągnięcie tego.

  1. Wybierz menu „Uruchom” → „Edytuj konfiguracje ...”. Kliknij zielony plus w lewym górnym rogu i wybierz JUnit.

  2. Wybierz „Rodzaj testu” na „Wzorzec” i wprowadź to wyrażenie regularne dokładnie tak, jak je widzisz: ^(?!.*IT$).*$(zaczyna się od daszka ^i kończy na dolara $). To wyrażenie regularne mówi: wszystkie testy, które nie kończą się informacją w ich imieniu .

  3. Wybierz „Wyszukaj testy” na „W całym projekcie”. Katalog roboczy powinien być ustawiony na katalog roboczy głównego modułu (powinien być ustawiony domyślnie).

  4. Wpisz nazwę testu, np. „Wszystkie testy jednostkowe”. Wolę też zaznaczyć opcję „Udostępnij”, aby ta konfiguracja nie zniknęła później. Kliknij Zastosuj i OK.

Możesz eksperymentować z tym wyrażeniem regularnym, aby dopasować je do swoich potrzeb.

Oryginalna odpowiedź:

Jest to wykonalne, chociaż nie jest to wygodne.

  1. Wybierz pierwszy moduł, kliknij prawym przyciskiem myszy test/javakatalog i „Uruchom wszystkie testy”. Tworzy konfigurację testową.
  2. Wybierz „Edytuj konfiguracje” i zaznacz „Udostępnij” na nowo utworzonej konfiguracji, aby została zapisana.
  3. Wybierz drugi moduł, „Uruchom wszystkie testy” na nim i zaznacz „Udostępnij” również w tej konfiguracji.
  4. W sekcji „Przed uruchomieniem” kliknij „+” i wybierz „Uruchom kolejną konfigurację”, a następnie wybierz konfigurację pierwszego modułu.

W ten sposób uruchamiasz konfiguracje w sekwencji, a każda konfiguracja otrzymuje nową kartę. Mimo wszystko lepsze niż nic.

Tomasz Kalkosiński
źródło
Dzięki! Zdecydowanie najczystszy sposób. Zastanawiam się, czy jest lepszy sposób na osiągnięcie tego po 3 latach :)
CoderSpinoza
Dzięki! Uratowałeś mi czas i jest to zdecydowanie wciąż najbardziej sprytny sposób mogę znaleźć wśród rozwiązać zarówno wielokrotne generowanie raportów pokrycia i jednolitej przypadku problemu drugie miejsce w jednym ujęciu .
Fei
Właśnie zredagowałem swój anser lepszym rozwiązaniem @CoderSpinoza
Tomasz Kalkosiński
10
Zaktualizowana wersja nie jest tak dobra , jeśli twoje przypadki testowe używają zasobów specyficznych dla modułu w czasie wykonywania - nadal wolę oryginalne rozwiązanie.
Fei
Jak uzyskać tę konfigurację, aby szanowała moje zależności Gradle? Teraz kończy się niepowodzeniem w przypadku brakujących klas z Guawy. Podczas uruchamiania testów pojedynczego modułu działa dobrze.
Jorn
22

Musisz utworzyć „Uruchom konfigurację”:

  1. Przejdź do menu u góry, po prawej stronie przycisku „Utwórz” i kliknij go
  2. Wybierz „Edytuj konfiguracje”
  3. Teraz kliknij przycisk „+”, aby dodać nową konfigurację uruchamiania i wybierz JUnit
  4. Następnie podczas konfigurowania „Uruchom konfigurację” znajdziesz menu „Rodzaj testu”, wybierz „Wszystkie klasy w katalogu”
  5. Wybierz katalog, którego chcesz używać jako katalog główny, możesz wybrać katalog najwyższego poziomu dla swojego projektu lub dowolny katalog dla swoich modułów.
  6. Wybierz moduł IntelliJ, z którego pobierasz ścieżkę klasy (może to być projekt najwyższego poziomu, jeśli ma ścieżkę klasy)
Alonso Dominguez
źródło
Dzięki za wskazówkę, ale to nie rozwiązuje problemu. Idealnym sposobem byłoby wybranie kilku reżerów, a nie tylko jednego. Poważnym rozwiązaniem jest użycie wykrojów, ale nadal może tylko
wzorować
15
W „Rodzaju testu” wybierz „Wszystko w pakiecie”, a następnie zaznacz pole „W całym projekcie”. Spowoduje to uruchomienie testów we wszystkich modułach.
Martin Odhelius
5
Chciałbym, aby każdy moduł działał z własnym katalogiem modułów jako katalogiem roboczym - wydaje się, że nie jest to możliwe, wydaje się, że używa jednego katalogu modułu do całości.
Bacar
@MartinOdhelius to jak dotąd najczystsze rozwiązanie
Hemil
10

Wybierz wszystkie moduły, kliknij je prawym przyciskiem myszy i wybierz opcję uruchomienia wszystkich testów. Spowoduje to utworzenie konfiguracji o nazwie „Cały projekt”, którą można ponownie uruchomić w dowolnym momencie.

Okazało się, że jest to lepsze niż zaakceptowana odpowiedź, ponieważ powoduje to uruchomienie testów jednostkowych oddzielnie dla każdego modułu. Jeśli twoje przypadki testowe używają zasobów specyficznych dla modułu w czasie wykonywania, to najlepsza zaakceptowana odpowiedź nie zadziała.

Wybierz wszystkie moduły

Wybierz wszystkie moduły

Kliknij prawym przyciskiem myszy i wybierz opcję uruchomienia wszystkich testów

Kliknij prawym przyciskiem myszy i wybierz opcję uruchomienia wszystkich testów

Uzyskaj nową konfigurację uruchamiania

Uzyskaj nową konfigurację uruchamiania

Dave Thomas
źródło
W pierwszym kroku wystarczy wybrać więcej niż jeden moduł.
user7610
2
Moim zdaniem powinna to być akceptowana odpowiedź. Jedyne zastrzeżenie, jakie mam, to użycie terminu „najłatwiejszy”. Niestety nie ma nic prostego w konfiguracjach uruchamiania z Intellij. Istnieje wiele sposobów wykonywania prostych zadań z konfiguracjami i zwykle tylko jeden, jeśli w ogóle, działa. Twoim zadaniem jest więc często iteracja przez wszystkie różne opcje w poszukiwaniu tej, która działa. To wcale nie jest łatwe.
David Sackstein,
To uruchamia wszystkie testy w projekcie (Cały projekt), mimo że wybieram niewielki ułamek modułów. Nie tego chcę. W moim przypadku wszystkie moduły, które chcę uruchamiać testy, mają wspólny pakiet, więc mogę edytować wynikową konfigurację „Cały projekt” i dodać pakiet, który filtruje, aby uruchomić test tylko dla podzbioru modułów.
Albert Vila Calvo
5

U mnie oba rozwiązania nie działały lub nie działały zgodnie z oczekiwaniami.

U mnie mam 3 moduły. Zależności moich modułów wyglądają następująco

Prezentacja -> Domena -> Dane

Chciałem tylko wykonać wszystkie testy razem. Dlatego wymyśliłem podejście „zależności między modułami”

Moje ustawienia wyglądają tak:

wprowadź opis obrazu tutaj

Langusten Gustel
źródło
2

To zadziałało dla mnie w przypadku projektu z wieloma modułami.

Utwórz nową konfigurację uruchamiania / debugowania JUnit. Rodzaj testu: „Wszystko w pakiecie” Wyszukaj testy: „Cały projekt”

Będziesz musiał również określić katalog roboczy.

Dan
źródło
Właśnie to też zrobiłem.
miva2
1

Innym nie tak oczywistym przypadkiem jest potrzeba pokrycia kodu w więcej niż jednym projekcie. Naiwnym rozwiązaniem byłoby wybranie wielu projektów i uruchomienie w nich wszystkich testów jednostkowych naraz. Jak się okazuje, testy jednostkowe mogą zakończyć się niepowodzeniem, jeśli ścieżka klas ulegnie zmianie, a IntelliJ ma dokładnie jeden wpis ścieżki klas na konfigurację uruchamiania. W takim przypadku uruchamianie testów jednostkowych w projektach sekwencyjnie jest w rzeczywistości wystarczające. Dzieje się tak, ponieważ pod koniec każdego uruchomienia IntelliJ (2017.2.5 Community Edition) pyta, czy zebrane pokrycie powinno zastąpić lub powinno zostać dodane do wcześniej zebranych statystyk zasięgu.

gabor
źródło