Падает метод если запускать его из теста JUnit

117
21 января 2021, 18:00

Написал метод который создает архив, если запускать из Main'a то все работает. Пытаюсь протестировать с помощью junit - падает ошибка java.io.FileNotFoundException: src\main\resources\zipped2.zip (Системе не удается найти указанный путь)

В чем может быть проблема?

Main:

public class Main {
    public static void main(String[] args) throws IOException {
        Zipper zipper = new Zipper();
        String packageSource = "src/main/resources/packageToZip";
        File file = new File(packageSource);
        FileOutputStream pathForZip = new FileOutputStream("src/main/resources/zipped.zip");
        ZipOutputStream zipOut = new ZipOutputStream(pathForZip);
        zipper.zip(file, file.getName(), zipOut);
        zipOut.close();
        String zipFile = "src/main/resources/zipped.zip";
        String outDirectory = "src\\main\\resources\\outDirectory";
        zipper.unZipIt(zipFile, outDirectory);
    }
}

Zipper:

public void zip(File file, String filename, ZipOutputStream zipOut) throws IOException {
        if (file.isDirectory()) {
            if (filename.endsWith(File.separator)) {
                zipOut.putNextEntry(new ZipEntry(filename));
                zipOut.closeEntry();
            } else {
                zipOut.putNextEntry(new ZipEntry(filename + File.separator));
                zipOut.closeEntry();
            }
            File[] filesList = file.listFiles();
            for (File foreachFile : filesList) {
                zip(foreachFile, filename + File.separator + foreachFile.getName(), zipOut);
            }
            return;
        }
        try (FileInputStream fileInput = new FileInputStream(file)) {
            ZipEntry zipEntry = new ZipEntry(filename);
            zipOut.putNextEntry(zipEntry);
            byte[] buffer = new byte[fileInput.available()];
            int length;
            while ((length = fileInput.read(buffer)) >= 0) {
                zipOut.write(buffer, 0, length);
            }
        }
    }

Test

public class ZipperTest {
    @Test
    public void zip() throws IOException {
        Zipper zipper = new Zipper();
        String packageSource = "src/main/resources/packageToZip";
        File file = new File(packageSource);
        FileOutputStream pathForZip = new FileOutputStream("src/main/resources/zipped2.zip");
        ZipOutputStream zipOut = new ZipOutputStream(pathForZip);
        zipper.zip(file, file.getName(), zipOut);
        zipOut.close();
    }
}
Answer 1

При запуске теста - другой текущий директорий. Задавайте/вычисляйте абсолютный путь.

READ ALSO
Замена строки в функции

Замена строки в функции

У меня есть функция, которую я хочу применить ещё раз в другом месте, но у неё будет отличие всего-лишь в одной строкеМожно ли как-то заменить...

132
Всплытие jquery

Всплытие jquery

Не могу понять что не такВроде запретил всплытие события, но "не работает"

102
Передача значения из input в button React

Передача значения из input в button React

Есть поле, в котором прописан статический путь формирования файлаЯ сделал это поле редактируемым на случай, если пользователь захочет по своему...

89