Frage

Unser Java-Code (nicht der Testcode) liest Dateien aus dem aktuellen Verzeichnis, das heißt, das Arbeitsverzeichnis richtig eingestellt werden muss, wenn wir den Code ausführen.

Wenn Sie einen JUnit-Test aus Eclipse startet, eine Startkonfiguration wird automatisch erstellt. Das Problem ist, dass das Arbeitsverzeichnis in dieser Startkonfiguration des Stammprojektverzeichnis, das immer falsch ist immer standardmäßig ist, der Test fehlschlägt, ich habe den Startkonfigurationsdialog zu öffnen, das Arbeitsverzeichnis ändern und den Test neu starten. Das ist sehr ärgerlich. Das gleiche passiert, wenn ich einen einzelnen Testverfahren ausgeführt werden.

Ich habe schon als diese:

  • Ändern des aktuellen Verzeichnisses aus dem Testcode -. Nicht möglich nach Design
  • Wenn Sie eine Datei öffnen, ein übergeordnetes Verzeichnis Parameter übergeben - zu schwierig, da diese viele Orte auswirken würde
  • .
  • Verwenden Sie die Kopieren Startkonfiguration Feature von Eclipse zu neuen Startkonfigurationen aus vorhandenen zu erstellen, die bereits eine korrekte Arbeitsverzeichnis festgelegt haben. Dies gilt nicht wirklich macht hier Sinn, da ich schnell einen Test oder ein Testverfahren starten möchte, nur durch „führen Sie diesen Test / Methode als JUnit-Test“ aufgerufen wird.

Alles in allem sieht es aus wie es in der Verantwortung von Eclipse ist, nicht den Code.

Gibt es eine Möglichkeit, die Standard festlegen Arbeitsverzeichnis für alle zukünftigen, neu erstellt JUnit Startkonfigurationen?

War es hilfreich?

Lösung 2

Soweit ich das beurteilen kann, gibt es keine Möglichkeit, das Standard-Arbeitsverzeichnis für zukünftige JUnit Startkonfigurationen in Eclipse 3.4 zu ändern. Dieses Problem wurde auch als Bug in der Eclipse-Bug-Datenbank gemeldet.

Allerdings ist es möglich, in IDEA. Es gibt die Standardwerte bearbeiten Taste zur Einstellung aller Arten von Standardeinstellungen für jeden Start-Konfigurationstyp getrennt.

Andere Tipps

Dies ist eine subjektive Antwort:

Ich glaube, Sie Ihre Tests falsch machen, sollten Sie nicht die Dateien aus dem JUnit werden Laden mit relativen oder vollständigen Pfade, aber stattdessen haben sie als Ressourcen im Projekt (fügen Sie sie in den Build-Pfad) und Last sie als Ressourcen in den JUnit-Tests. Auf diese Weise, wenn etwas auf dem Dateisystem ändert, jemand verwendet ein anderes Dateisystem oder IDE, aber noch hat sie in dem Build-Pfad (als Quellordner) Sie kein Problem haben werden.

Ich bin nicht sicher, ob dies ist, was du meinst, aber wenn Sie wirklich ändern wollen es den Run Konfigurationsoptionen gehen -> Ihre JUnit -> Argumente Registerkarte am unteren Rand (Eclipse-3.4) Sie Arbeitsverzeichnis zu sehen, klicken Sie auf " andere‘und von dort ändern.

Mit Eclipse-3 Sie können Sie einstellen Verzeichnis arbeiten. Gehen Sie / Debug-Konfiguration ausführen -> Argumente Registerkarte. Im Arbeitsverzeichnis wählen „andere“ und geben Sie die Wurzel Ihres Test

Ich habe keine Möglichkeit, dies zu tun gefunden, aber was können Sie tun, ist zu verwenden:

getClass () getResourceAsStream (Dateiname);.

getClass () getClassLoader () getResourceAsStream (Dateiname);..

Diese Methode findet eine Ressource auf dem Classpath. Der erste, der den Standort der Klasse relativ ist, ist die zweite zu irgendeinem classpath „Root-Eintrag“ relative. Sie können dann zum Beispiel das Projekt Stammverzeichnis zu dem Classpath hinzufügen.

Dies gilt jedoch nicht funktionieren, wenn Sie auch in eine Datei geschrieben werden sollen.

Wenn Sie Ihre Tests auf dem aktuellen Arbeitsverzeichnis ab, ich denke, es keinerlei Gewährleistung Ihrer Tests zu Setup ist richtig, dass das Arbeitsverzeichnis und Ihre Klassen zu konfigurieren getestet werden, auf dieses Verzeichnis zu verweisen.

Wenn Sie eine übergeordnete Klasse für die meisten Ihrer Tests haben, schreiben Sie eine Konstante in ihr. Oder: Wenn Sie eine übergeordnete Klasse für die meisten Ihrer Tests haben, schreiben Sie eine @Before Setup-Methode. Oder:., Wenn Sie nicht eine übergeordnete Klasse haben für die meisten Ihrer Tests, schreiben Sie eine Konstante in irgendeiner Klasse des Tests Code-Basis

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top