2016-07-17 11 views
0

Ich habe Multi-Modul-Projekt, das ein Testmodul speziell für die Durchführung von Integrationstests hat. Ich habe bemerkt, dass sich der Klassenpfad des Tests signifikant ändert, wenn eine einzelne Klasse ausgeführt wird oder das gleiche Paket ausgeführt wird.IntelliJ Test Classpath: Anders beim Ausführen Klasse vs Paket

Von der Inspektion kann ich sehen, dass ein anderes Projektmodul (und seine Abhängigkeiten) dem Klassenpfad hinzugefügt werden, der keine Abhängigkeit des Testmoduls (direkt oder transitiv) ist - es ist eine Datenbank für die Datenbankmigration, auf die man nicht angewiesen ist bei irgendetwas anderem.

Kann jemand rationalisieren, warum sich ein Testklassenpfad ändern würde, wenn eine einzige Klasse vs. alle 3 Klassen in demselben Paket ausgeführt wird?

Hintergrund: IntelliJ 14.1.3 Tests passieren, wenn sie über Maven Lauf

+1

Wie haben Sie konfigurieren Sie die [CLASSPATHs] (https://www.jetbrains.com/help/idea/2016.1/run-debug-configuration-application.html#1) für die 2 läuft? – Morfic

+0

@Morfic Beide verwenden die Standardeinstellung. Wenn ein einzelner Test ausgeführt wird, wird standardmäßig der Klassenpfad des Moduls verwendet. Wenn ein Paket ausgeführt wird, ist die Option ausgegraut und nicht änderbar. – markdsievers

+0

@Morfic Danke für den Doco Link. Das hat mich zum Experimentieren gebracht und ich habe es schließlich gelöst. Es stellt sich also heraus, dass der Standard-Testklassenpfad beim Ausführen von Paket ALLES ist. Ich musste eine Konfiguration erstellen, um den Klassenpfad für ein bestimmtes Modul explizit festzulegen, wenn Tests von einem bestimmten Paket ausgeführt werden. Danke für den Anstoss in die richtige Richtung. Fügen Sie eine Antwort hinzu, um Ihre Punkte zu beanspruchen! – markdsievers

Antwort

0

Der Unterschied in den Run... Run Konfigurationen Abschnitte zu sehen.

Wenn für ein Paket der Run... Option, die Test kind Standardeinstellung All-in-Package jedoch die Package auf das Paket nicht standardmäßig verwendet, wenn Run... aufgerufen wird. Der Standardwert Use classpath of module wurde ausgegraut (und bleibt so lange bestehen, bis Sie eine Package auswählen). Es sieht also so aus, als ob der Klassenpfad aller Module verwendet wurde.

Use classpath of module war die Option, die ich benötigte, um den Klassenpfad zu korrigieren, wenn alle Tests in einem Paket ausgeführt wurden.

enter image description here

Verwandte Themen