2012-06-08 1 views
11

Ich habe ein Multimodulprojekt in Intellij und ich habe eine Reihe von Gurkenhalterungen in den Testquellen eines Submoduls, die ich in einem anderen wiederverwenden möchte Submodul. Wenn ich das andere Modul als eine Abhängigkeit hinzufüge, dann wird das normale output-Verzeichnis zu dem junit-Klassenpfad hinzugefügt, aber nicht seine Testausgabe.In Intellij ist es möglich, dass ein Modul auf die Tests eines anderen Moduls angewiesen ist

Ist es möglich, intellij auch ein Modul Testverzeichnisse zu exportieren und anderen Modulen zu erlauben, sie zu benutzen?

+0

Die Testausgabe sollte zum Klassenpfad hinzugefügt werden. Wird Ihr Projekt von Maven importiert? – Nik

+0

möglich Duplikat von [Freigabe Testcode in Maven] (http://stackoverflow.com/questions/174560/sharing-test-code-in-maven) – thecoop

Antwort

1

vielleicht, aber Sie sollten dies durch Ihre automatisierte Build tun, d. H. In Maven, nicht Ihre IDE. Wenn Sie die Tests eines Maven-Moduls als separate Abhängigkeit veröffentlichen (etwas, was ich tue), können Sie das Test-Jar als Dep des anderen Moduls hinzufügen. IDEA wird das natürlich automatisch erledigen.

http://maven.apache.org/guides/mini/guide-attached-tests.html

+0

würde gerne Maven verwenden, aber das ist keine Option. Danke für den Vorschlag. – sgargan

+0

eine Option ist nur Dinge in Ihre Produktionsquellen zu integrieren, oder erstellen Sie ein "Test" -Modul, das Test-Zeug in der Produktion Quellpfad enthält ... – ianpojman

+0

Es gibt keine Möglichkeit, IntelliJ zu bekommen, die Testklassen in einem Projekt zugänglich zu sein die Testklassen eines anderen abhängigen Projekts? Wenn Sie zum Beispiel Tests lokal über die IDE – thecoop

2

Ja, Sie können, aber es ist nicht einfach. So

Sie haben Modul-A und Modul-B.

Modul-B hat eine TestClass, die vielleicht eine Abstract erweitert oder verwendet einige statische Helfer aus Modul-A

Hinweis: Dies wird nur in intellij arbeiten, wenn Sie Mit Maven oder Gradle müssen Sie überprüfen, ob dies noch in Ordnung ist.

Hier ist, was Sie tun müssen.

  1. Goto Projektstruktur ...(Ctrl+Alt+Shift+S - win/linux)
  2. Goto Module und Schauen Sie sich Modul-A ‚s Pfad Tab
  3. notieren Sie den Pfad Testausgang nehmen oder diese kopieren. Es könnte so etwas sein: C:\dev\projects\myProject\moduleA\build\testclasses oder ähnlich.
  4. Gehen Sie zu Modulen und wählen Sie Modul-B und sehen Sie sich an. Tab.
  5. Sie können bereits eine Abhängigkeit von Modul-A haben für Kompilierung hier in und das ist ok.Click auf dem + oder eine neue Bibliothek (No 2 zu den Optionen)
  6. Auf der (Alt+Insert) und fügen Sie geben Wählen Sie Bibliotheken Bildschirm Wählen Sie die New Library ... Schaltfläche. Wählen Sie die Option Java.
  7. In dem Dialogfeld, das erscheint, gehen Sie zum Build-Ordner, den Sie hatten über C:\dev\projects\myProject\moduleA\build\testclasses und klicken Sie auf OK. Sie werden jetzt die Klassen für Ihre Modul-A hier haben.Nennen Sie es etwas passendes Module-A Tests und ändern Sie die Ebene Option zu Modulbibliothek.
  8. Klicken Sie auf die + Schaltfläche (Alt+Insert), um auch die Quelle hinzuzufügen. Navigieren Sie zu den Test-SRC-Dateien. E.G .: C:\dev\projects\myProject\moduleA\src\test und fügen Sie dies hinzu und Sie werden nun auch eine Quelle hinzugefügt haben.
    1. Klicken Sie OK und Sie werden auf die Struktur Dialog Projekt zurückkommen.
    2. Jetzt haben Sie eine neue Bibliothek zu Ihren Abhängigkeiten hinzugefügt. Ändern Sie den Scope zu -Test
    3. Presse OK am Boden und fertig. Möglicherweise müssen Sie das Projekt erstellen/bereinigen.

Und jetzt haben Sie Test Depencies zwischen den Modulen verbunden.

Wenn Sie sich eine bessere Lösung vorstellen können, lassen Sie es mich wissen, aber dies ist der einfachste Weg, den ich gefunden habe.

+0

Ich wünschte wirklich, ich hätte nicht danach gesucht ... (Ich bin faul Ich denke, ich werde nur die paar abstrakten Problemtestklassen verschieben, die ich habe * Modul B *, mag es nicht wirklich, weil einige * Modul A * Tests müssen nach * Modul B * verschoben werden, obwohl sie den Code in * Modul A * testen, aber naja - es ist einfacher – ycomp