JUnit Tests - Dateipfade von temporären Dateien

Hallo,
gibt es in JUnit Möglichkeiten mit den Pfadangaben(als Strings) von temporären Dateien zu arbeiten? Mein Problem, lokal laufen die Tests, im Jenkins dagegen nicht.

     * Test of run method, of class Job.
     */
    @Test
    public void testRun() throws InterruptedException {
        try {
            
            Job job = new Job();
            job.setFilePath(new File(".", "../../test/Test.docx").getPath());
            job.setTargetPath(new File(".", "../../test").getPath());
            job.setConvertServiceURL(config.getProperty("serviceURL_converter"));
            job.setToolboxServiceURL(config.getProperty("serviceURL_toolbox"));
            Thread t = new Thread(job);
            t.run();
         
         
            assertTrue(new File(".","../../test/PDF/Test.pdf").exists());
            assertTrue(new File(".","../../test/TIFF/Test.tif").exists());
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }


...
@AfterClass
    public static void tearDownClass() {
        assertTrue(new File(".","../../test/PDF/Test.pdf").delete());
        assertTrue(new File(".","../../test/TIFF/Test.tif").delete());
    }
    }```

Bessere Tests schreiben :wink:

File(".") geht ja mal gar nicht.

https://weblogs.java.net/blog/johnsmart/archive/2009/09/29/working-temporary-files-junit-47

[QUOTE=maki]Bessere Tests schreiben :wink:

File(".") geht ja mal gar nicht.

https://weblogs.java.net/blog/johnsmart/archive/2009/09/29/working-temporary-files-junit-47[/QUOTE]
Oh das ist ein nettes Feature von JUnit. Vielleicht sollte ich doch mal wieder TestNG verlassen. :slight_smile:

Warum nicht beides?

Tests mit JUnit schreiben und mit TestNG ausfuehren :wink:

TestNG hat IMHO Vorteile., u.a. die Listener, aber die Tooling Untersuetzung fuer JUnit ist eben viel besser.

und auch wenn es reale Files sind, die zum testen genommen werden, so muessen diese im source path vorhanden sein, dann kann/sollte man diese laden und nicht per File konstruktor irgendwie erzeugen

Ach ja…

Das hier:

        try {
...
        } catch (Exception ex) {
            ex.printStackTrace();
        }

Macht man nicht in Tests, generell macht man da keine Fehlerbehandluing, jede unerwartete Exception bedeutet einen fehlgeschlagenen test.

Personeloch sehe das uebrigens so:
Ein Test der das Dateisystem nutzt, ist kein isolierter Unittest sondern schon eine art Integrationstest.
Duck und weg

Ich sehe das so wie @maki .

Dein Test testet implizit mehr als dass die Zieldatei im richtigen Pfad erzeugt wird, nämlich dass die gesamte Generierung des PDF funktioniert.

Die Definition des UnitTests ist aber (laut Roy Osherove, Autor von “The Art of UnitTesting”), dass genau eine explizite Anforderung getestet wird, und alle Codeteile, die nicht direkt an der Erfüllung dieser einen Anforderung beteiligt sind simuliert werden.

bye
TT

Thx. Für die vielen Anmerkungen und Vorschläge.