Путь к файлу Junit

Я передаю filePath в JUnit следующим образом

public static void copyFile() throws IOException 

  {
    String inputFileName = "myproj/src/test/resources/list.csv";
    File file = new File(inputFileName);
    File newFile = new File(new File("/tmp"), file.getName());
    FileUtils.copyFile(file, newFile);
  }

Структура пакета выглядит следующим образом.

Я запускаю Test.java из IDE (IntelliJ), и он работает нормально, но когда я делаю чистую установку mvn, я получаю следующее исключение

java.io.FileNotFoundException: источник 'myproj/src/test/resources/list.csv' не существует
    на org.apache.commons.io.FileUtils.copyFile(FileUtils.java:1004)
    на org.apache.commons.io.FileUtils.copyFile(FileUtils.java:968)
    в......copyFile(Test.java:21)

Может кто-нибудь, пожалуйста, дайте мне знать, как я должен дать имя пути в JUnit.

1 ответ

Исключением является серьезный намек на проблему... файл не существует по этому пути.

В вашей IDE рабочий каталог установлен так, что ваш относительный путь (myproj / src / test / resources / list.csv) разрешается правильно.

Задача Maven выполняется из другого рабочего каталога, предположительно из myproj, поэтому путь к файлу не может быть разрешен.

У вас есть несколько возможностей:

  1. Используйте абсолютный путь
  2. Вместо этого загрузите ресурс из пути к классам, используя getResourceAsStream https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html
  3. Создание различных относительных путей в зависимости от среды (это плохое решение)
Другие вопросы по тегам