2013-10-23 3 views
5

Ich versuche, von Eclipse zu Idea zu wechseln und es schwer zu haben, JUnits auszuführen. Die Anwendung ist eine Legacy-Anwendung mit 10k + Java-Klassen.IntelliJ Idea "Make" verursacht Wiederaufbau während der Ausführung von JUnit Test

Jedes Mal, wenn ich einen JUnit laufen, entweder es dauert 3-4 Minuten den Testfall kompiliert und führt sie dann aus, oder es gibt einen ClassNotFoundException für diese bestimmte JUnit-Klasse.

Ich habe eine vollständige Erstellung des Projekts (die etwa 9 Minuten dauert) durchgeführt. Ich erwarte, dass nach dem Build nur die geänderten Dateien während "Make" neu kompiliert werden sollten. Und in meinem Fall, da ich keine Datei geändert habe, sollte die JUnit sofort ausgeführt werden.

Ich benutze IntelliJ Idea 12 Community Edition und ich habe "Externe Build verwenden" in Compiler-Einstellungen aktiviert.

Fehle ich irgendeine Einstellung oder mache ich etwas falsch?

EDIT: Während die JUnit ausgeführt wird, ich die Ausgabe classes beobachtet, und es sieht aus wie es die generierten Klassen zu löschen und sie wieder zusammenzustellen!

Antwort

3

Es stellt sich heraus, dass IntelliJ IDEA keinen einzigen Fehler in Ihrem gesamten Projekt mag, auch wenn der Fehler in einer Klasse liegt, die völlig unabhängig von dem Test ist, den Sie ausführen. Kann der Make sein Prozess denkt, dass die Dateien mit Kompilierungsfehlern neu kompiliert werden müssen. Aber selbst dann, warum hat es die kompilierten Klassen geleert und ihre Neukompilierung ist mir noch ein Rätsel.

Die Lösung für dieses Problem war sicherzustellen, dass kein Fehler in Ihrem Projekt ist. Nachdem ich alle Kompilierungsfehler behoben und einen vollständigen Neuaufbau durchgeführt habe, dauern die Tests nun etwa 2-3 Sekunden.

+0

Das ist nicht so sehr eine IDEA-Sache, sondern eine Javac-Sache. Und standardmäßig verwenden Sie javac zum kompilieren. Sie können dieses Verhalten ändern, indem Sie die Compilereinstellungen so ändern, dass der Eclipse-Compiler verwendet wird. Das Verschieben von Kompilierungsfehlern ist eine Funktion des Eclipse-Compilers und nicht der Eclipse-IDE. Setzen Sie es auf _Compiler> Java Compiler> Verwenden Sie Compiler_ und dann mit dem ausgewählten Sie können wählen Sie die Option "Weiter bei Fehlern" am unteren Rand. Ich glaube, das wird Ihr ursprüngliches Problem lösen. (Ich benutze immer noch den Javac-Compiler und habe nur mit dem Eclipse-Compiler gespielt.) – Javaru

+1

Ich kann bestätigen, dass dies * für die Idee spezifisch ist (und ich benutze den Eclipse-Compiler). Ich kann den Test sofort in Eclipse für das gleiche Projekt ausführen (mit Kompilierungsfehlern). – Manish

0

Nur um sicherzustellen, dass wir die Begriffe Kompilierung verwenden, stellen, bauen und auf die gleiche Art und Weise neu zu erstellen, finden Sie in die Compilation Typen in den Hilfe-Leitfaden (Grundkonzepte> Compiler und Builder> Compilation-Typ) oder über seine webhelp equivalent.

Wenn Sie einen Komponententest oder eine Anwendung ausführen, erstellt IDEA standardmäßig Make und sollte daher nur Klassen kompilieren, die sich seit dem letzten Lauf geändert haben. Ein potenzielles Problem (besonders bei älteren Projekten) liegt in der Abhängigkeitsauflösung. Der make-Prozess kompiliert auch alle Abhängigkeiten, die sich geändert haben. Wenn ein Projekt einige zirkuläre/kreuzweise Abhängigkeiten hat, kann es die rekursive Abhängigkeitsprüfung "verwirren" und als Ergebnis kann ein vollständiges Modul oder Module kompiliert werden. Das mag das Problem sein, zu dem du rennst.

Es ist möglich, dass eine "weniger als ideale" Abhängigkeitskarte die Neukompilierung verursachen könnte, auch wenn sich keine Dateien geändert haben. Beachten Sie, dass der make-Prozess noch ausgeführt werden sollte. Dieser Prozess prüft auf geänderte Klassen und startet dann die Kompilierung. Aber wenn sich kein Code geändert hat, sollte das nur ein oder zwei Sekunden dauern. Ein paar Dinge zu prüfen/zu versuchen: Stellen Sie sicher, dass in Ihrem Gerät Testlauf/Debug-Konfiguration (Ausführen> Konfigurationen bearbeiten) hat nur "Make" in seinem "vor dem Start" Abschnitt. (Dies sollte die Standardeinstellung sein und kann im Abschnitt Standard in diesem Dialogfeld geändert werden). Schließlich können Sie versuchen, die IDEA-Caches/Indizes ungültig zu machen (Datei> Caches ungültig machen) und IDEA neu starten. Beim Neustart muss IDEA Ihr Projekt neu indizieren und Sie müssen eine weitere vollständige Neuerstellung durchführen. Es ist möglich gibt es einige Korruption in den Indizes, die die Neukompilierung verursacht.

Und nur um das Offensichtliche zu überprüfen, stellen Sie sicher, dass Sie die neueste Version von IDEA (12.1.6) verwenden.

+0

Vielen Dank für Ihre Vorschläge. – Manish

2

Wenn Sie die JUnit-Konfiguration speichern und dann bearbeiten, können Sie den Abschnitt "vor dem Start" bearbeiten. Sie können "Make" von dort entfernen und "Make, no error check" setzen. Dies sollte den Build-Prozess beschleunigen und das Problem lösen.

Getestet auf IDEA 13.1.5

+0

Dies funktioniert nicht, wenn Sie nicht das gesamte Projekt erstellen möchten, sondern nur die Teile, die Sie testen möchten. Eclipse bewältigt dieses Wunder, IDEA fällt schwer. – Gewure

Verwandte Themen