2015-04-21 7 views
6

Gibt es eine Möglichkeit, die Build-Zeit von Komponententests für Play Framework in Intellij zu beschleunigen? Ich mache TDD. Jedes Mal, wenn ich einen Test ausführe, dauert es etwa 30 - 60 Sekunden, um zu kompilieren. Sogar ein einfacher Hallo Welt Test braucht Zeit. Wenn Sie denselben Test auch ohne Änderung erneut ausführen, wird der Prozess make gestartet.Tests in Intellij für Play Framework sind sehr langsam

Ich bin auf Intellij 14.1, auf Play 2.3.8, in Scala geschrieben.

Ich habe bereits versucht, den Java-Compiler auf Eclipse zu setzen, und habe auch versucht, Scala-Compiler auf SBT einzustellen.

Antwort

2

Ich gehe davon aus, dass Sie wissen, dass das Problem Build-Time ist - dass die tatsächliche Laufzeit für die Tests selbst vernachlässigbar ist.

Was haben Sie für Hardware? Meiner Erfahrung nach sind 4 GB RAM nicht genug, um Intellij Scala gut zu machen - es braucht einen großen Festplatten-Cache (für den das Betriebssystem freien RAM verwendet), denke ich. Eine SSD hilft auch. Verwenden Sie Performance Monitor oder analog für Ihr Betriebssystem, um festzustellen, ob es sich um eine Festplatte, eine CPU oder ein Netzwerk handelt. Wenn es CPU ist, überlegen Sie, ob die Heap-Größe ein Problem sein kann.

Wie ist Ihr Build-Prozess? Gibt es sbt Plugins? Wie groß ist dein Projekt?

UPDATE

ohne Änderungen eine vollständige Wiederherstellung auslösen, ist falsch. Gibt es in Ihren Tests etwas, das die Projektverzeichnisse verändert? Wenn Sie einen Dummy-No-Op-Test durchführen, macht es dasselbe? Schreiben Sie vielleicht Protokolle in den Projektbaum?

In meiner begrenzten Erfahrung, voll Wiedergabe baut unter Intellij Größenordnungen langsamer als eine reine Scala bauen - ich wegen all der SBT-Plugins erraten würde (siehe Compiler, xScript Compiler, XSS-Compiler, etc.), die muss rennen. Aber inkremental sind nicht so schmerzhaft.

Lesen Sie unter OSX "Activity Monitor" für "Systemmonitor".

UPDATE

Siehe Intellij issue SCL-8235 für andere Leute die Erfahrung und Abhilfen für langsame inkrementelle Wiedergabe aufbaut. Stimmen Sie für das Problem ab, um seine Priorität zu erhöhen und es schneller zu beheben.

+0

Ja! Entschuldigung für die Beschreibung. Was ich meinte, war die Bauzeit. Ich laufe auf 8GB Mitte 2012 Mac-Maschine. Traurig zu sagen, es ist auf 5400rpm HDD. Wollen Sie SBT Plugins in Intellij fragen? Wenn ja, habe ich sie. Das Projekt ist ein Mikroservice, und es ist sogar in einem frühen Stadium, also ist es noch klein. – jespeno

+0

@jespeno - siehe Update –

+0

Eigentlich scheint es nicht eine vollständige Neuerstellung zu sein. Die Nachrichten gehen wie folgt (wenn nur eine Klasse geändert wird) [in Pastebin hochgeladen] (http://pastebin.com/G0WuTPHt) – jespeno

0

Wie wäre es, vorhandene Tests zu entfernen und nur Ihre zu verlassen? Klicken Sie mit der rechten Maustaste auf das Testverzeichnis (das grün sein sollte) und Unmark as Test Source Root.

+0

Oft, wenn ich Refaktor, muss ich immer noch den ganzen anderen Test ab und zu laufen (vielleicht alle 40 Minuten oder so), so ist dies keine Option für mich :( – jespeno

+0

Sahst du 'sbt test- only' Funktion? –

+0

ist der von SBT-Plugin unterstützt? ich nicht die Möglichkeit, es zu zwicken finden kann. auch nach den Build-Nachrichten, IntelliJ 14.1 Wiedergabe Compiler mit den Quellen zu kompilieren. – jespeno

3

In intellij 14.1.2 ich die Abhilfe tat ist:

1) entfernen make von Tests (Edit Configurations ->Defaults ->Scala Test ->Before launch -> (-) Make)

2 Starten) activator (oder play) mit ~ test:compile (ex: activator ~test:compile) oder (sbt ~ test:compile)

Dies verhindert, dass IntelliJ ein Spiel Compilation Server jedes Mal, wenn einvon Aufrufenwird aufgerufen. Die Kompilierung wird an einen externen sbt/activator/play-Prozess delegiert, um die kontinuierliche Kompilierung durchzuführen. Der Nachteil besteht darin, dass beim Ausführen des Tests unmittelbar vor Abschluss der Kompilierung möglicherweise eine NoClassDefinedFound-Ausnahme auftritt.Außerdem müssen Sie einen zusätzlichen Prozess überwachen. Dieses Setup ist jedoch im Vergleich zur Standardkonfiguration von Intellij (vorerst) viel schneller. Hoffe das hilft jedem.

Verwandte Themen