2013-10-23 15 views
5

Próbuję przejść od Eclipse do Idea i ciężko próbuję wykonać JUnits. Aplikacja jest starszą aplikacją z klasami 10k + java.IntelliJ Idea "Make" powoduje przebudowę podczas uruchamiania JUnit Test

Ilekroć uruchamiam dowolny JUnit, albo trwa 3-4 minuty do kompilowania przypadku testowego, a następnie wykonuje go lub daje wyjątek ClassNotFoundException dla tej konkretnej klasy JUnit.

Wykonałem pełną kompilację projektu (co zajmuje około 9 minut). Oczekuję, że po kompilacji tylko zmodyfikowane pliki powinny zostać zrekompilowane podczas "Make". W moim przypadku, ponieważ nie zmieniłem żadnego pliku, JUnit powinien zostać natychmiast wykonany.

Używam IntelliJ Idea 12 Community Edition i mam "Użyj kompilacji zewnętrznej" sprawdzone w ustawieniach kompilatora.

Czy brakuje mi jakichkolwiek ustawień lub czegoś złego?

EDIT: Podczas uruchamiania JUnit, obserwowałem katalog klasach mocy i wygląda na to, że jest usuwanie wygenerowanych klas i zestawiania ich ponownie!

Odpowiedz

3

Okazuje się, że IntelliJ IDEA nie lubi jednego błędu w całym projekcie, nawet jeśli błąd występuje w pewnej klasie, która jest całkowicie niezwiązana z uruchomionym testem. Może być proces Make uważa, że ​​pliki zawierające błędy kompilacji muszą zostać ponownie skompilowane. Ale nawet wtedy, dlaczego wyczyszczono skompilowane klasy i rekompilacja ich nadal jest dla mnie zagadką.

Rozwiązanie tego problemu polegało na upewnieniu się, że w projekcie jest brak błędu. Po naprawieniu wszystkich błędów kompilacji i przeprowadzeniu pełnej przebudowy, uruchomienie testów zajmuje teraz około 2-3 sekund.

+0

To nie jest pomysł, ale javac. I domyślnie idea używa javac do kompilacji. Możesz zmodyfikować to zachowanie, zmieniając ustawienia kompilatora, aby używał kompilatora Eclipse (Błędy w trakcie kompilacji są funkcją kompilatora Eclipse, a nie Eclipse IDE). Ustaw go na _Compiler> Kompilator Javy> Użyj kompilatora_, a następnie z zaznaczonym, możesz wybrać opcję "Kontynuuj na błędach" na dole. Wierzę, że rozwiąże twój pierwotny problem. (Nadal używam kompilatora javac i grałem tylko z kompilatorem Eclipse.) – Javaru

+1

Potwierdzam, że to * jest * specyficzne dla idei (i używam kompilatora Eclipse). Mogę uruchomić test natychmiast w Eclipse dla tego samego projektu (z błędami kompilacji). – Manish

0

Wystarczy, aby mieć pewność, że korzystasz z warunkami kompilacji, marka, budować i odbudowywać w taki sam sposób, proszę odnieść się do typów kompilacji w pomocy prowadnicy (Podstawowe pojęcia> Compiler i budowniczym> Typy Compilation) lub poprzez jego webhelp equivalent.

Domyślnie po uruchomieniu testu jednostkowego lub aplikacji IDEA wykonuje Make i dlatego powinna kompilować tylko klasy, które uległy zmianie od ostatniego uruchomienia. Potencjalne zagrożenie (zwłaszcza w przypadku starszych projektów) leży w rozwiązaniu zależności. Proces tworzenia będzie również kompilował wszystkie zależności, które uległy zmianie. Jeśli projekt ma pewne zależności cykliczne/krzyżowe, może "zmylić" rekursywną kontrolę zależności iw rezultacie skompilować pełny moduł lub moduły. Może to być problem, do którego się wybierasz.

Jest możliwe, że mapa zależności "mniej niż idealna" mogłaby spowodować rekompilację, nawet gdyby nie zostały zmienione żadne pliki. Pamiętaj, że proces tworzenia powinien nadal działać. Jest to proces, który sprawdza zmodyfikowane klasy, a następnie uruchamia kompilację. Ale jeśli żaden kod się nie zmienił, to powinno zająć tylko sekundę lub dwie. Kilka rzeczy do sprawdzenia/wypróbowania: Sprawdź, czy w konfiguracji testu uruchamiania/debugowania jednostki (Uruchom> Edytuj konfiguracje) ma tylko "Utwórz" w sekcji "Przed uruchomieniem". (Powinno to być domyślne i może być modyfikowane w sekcji Domyślne w tym oknie dialogowym). Na koniec możesz spróbować unieważnić bufory/indeksy IDEA (Plik> Unieważnij pamięci podręczne) i ponownie uruchomić IDEA. Po ponownym uruchomieniu IDEA będzie musiała ponownie zindeksować twój projekt i będziesz musiał/powinien wykonać kolejną pełną przebudowę. To jest możliwe jest trochę korupcji w indeksach, które powodują ponownej kompilacji.

I żeby sprawdzić oczywiste, upewnij się, że używasz najnowszej wersji IDEA (12.1.6).

+0

Dziękuję za sugestie. – Manish

2

Zapisując konfigurację JUnit, a następnie ją edytować, można edytować sekcję "przed uruchomieniem". Możesz usunąć "Make" stamtąd i wpisać "Make, no error check". To powinno przyspieszyć proces kompilacji i rozwiązać problem.

Testowany na IDEA 13.1.5

+0

to nie działa, jeśli nie chcesz, aby cały projekt, ale tylko części, które chcesz przetestować. Eclipse obsługuje to wspaniałe, IDEA nie udaje się. – Gewure

Powiązane problemy