Wie kann man das Arbeitsverzeichnis für JUnit-Startkonfigurationen in Eclipse standardmäßig verwenden?

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

Beim Starten eines JUnit-Tests in Eclipse wird automatisch eine Startkonfiguration erstellt. Das Problem ist, dass das Arbeitsverzeichnis in dieser Startkonfiguration standardmäßig immer das Stammprojektverzeichnis ist, das immer falsch ist, der Test fehlschlägt, ich muss das Dialogfeld für die Startkonfiguration öffnen, das Arbeitsverzeichnis ändern und den Test neu starten. Das ist sehr ärgerlich. Dasselbe geschieht, wenn ich eine einzelne Testmethode ausführe.

Ich habe diese bereits in Betracht gezogen:

  • Ändern des aktuellen Verzeichnisses aus dem Testcode - nicht möglich.
  • Übergeben Sie beim Öffnen einer Datei einen übergeordneten Verzeichnisparameter - zu schwierig, da dies viele Stellen betreffen würde.
  • Verwenden Sie die Copy Launch-Konfiguration Funktion von Eclipse, um neue Startkonfigurationen von vorhandenen zu erstellen, die bereits über einen korrekten Arbeitsverzeichnissatz verfügen. Das macht hier eigentlich keinen Sinn, da ich schnell einen Test oder eine Testmethode starten möchte, indem ich einfach "diesen Test/diese Methode als JUnit-Test ausführen" anruft.

Alles in allem sieht es so aus, als ob es die Verantwortung von Eclipse ist, nicht der Code.

Gibt es eine Möglichkeit, das Standard-Arbeitsverzeichnis für alle zukünftigen, neu erstellten JUnit-Startkonfigurationen festzulegen?

Antwort auf "Wie kann man das Arbeitsverzeichnis für JUnit-Startkonfigurationen in Eclipse standardmäßig verwenden? " 5 von antworten

Dies ist eine subjektive Antwort:

Ich glaube, Sie machen Ihre Tests falsch, Sie sollten die Dateien nicht mit relativen oder vollständigen Pfaden aus der JUnit laden, sondern sie als Ressourcen im Projekt haben (sie zum Buildpfad hinzufügen) und sie als Ressourcen in den JUnit-Tests laden. Auf diese Weise, wenn sich etwas auf dem Dateisystem ändert, jemand ein anderes Dateisystem oder eine andere IDE verwendet, sie aber dennoch im Buildpfad (als Quellordner) hat, wird kein Problem aufgetreten sein.

Ich bin mir nicht sicher, ob dies das ist, was Sie meinen, aber wenn Sie es wirklich ändern möchten, gehen Sie auf die Registerkarte Konfiguration ausführen -> Ihre JUnit -> Argumente, unten (Eclipse 3.4) sehen Sie Working Directory, klicken Sie auf "Andere" und ändern Sie es von dort aus.

Der erste ist relativ zur Position der Klasse, der zweite relativ zu jedem Klassenpfad "Root-Eintrag". Sie können dann z. B. das Projektstammverzeichnis zum Klassenpfad hinzufügen.

Dies funktioniert jedoch nicht, wenn Sie auch in eine Datei schreiben möchten.

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

getClass().getResourceAsStream(dateiname);

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

Diese Methode sucht eine Ressource auf dem Klassenpfad.

Oder: Wenn Sie eine Superklasse für die meisten Tests haben, schreiben Sie eine @Before-Setup-Methode. Oder: Wenn Sie für die meisten Tests keine Übergeordnete Klasse haben, schreiben Sie eine Konstante in einer Klasse der Testcodebasis.

Wenn Ihre Tests vom aktuellen Arbeitsverzeichnis abhängen, liegt es meiner Meinung nach in der Verantwortung Ihrer Tests, dieses Arbeitsverzeichnis korrekt einzurichten und Ihre Klassen so zu konfigurieren, dass sie getestet werden, um dieses Verzeichnis zu verweisen.

Wenn Sie eine Superklasse für die meisten Ihrer Tests haben, schreiben Sie eine Konstante darin.

Soweit ich sagen 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 reported as a bug in the Eclipse bug database. in der Eclipse-Fehlerdatenbank.

Es ist jedoch in IDEA möglich. Es gibt die Schaltfläche Edit Defaults zum Festlegen aller Arten von Standardeinstellungen für jeden Startkonfigurationstyp separat.

Mit Eclipse 3 können Sie Einarbeitsverzeichnis einstellen. Gehen Sie zu Run/Debug-Konfiguration -> Argumente Registerkarte. Wählen Sie im Arbeitsverzeichnis "Andere" aus und geben Sie den Stamm Ihres Tests

ein.