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());
}
}```
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
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
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.