Путь к файлу 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, поэтому путь к файлу не может быть разрешен.
У вас есть несколько возможностей:
- Используйте абсолютный путь
- Вместо этого загрузите ресурс из пути к классам, используя getResourceAsStream https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html
- Создание различных относительных путей в зависимости от среды (это плохое решение)