Путь к файлу - относительный путь - PullRequest
0 голосов
/ 01 июля 2018

У меня есть проект maven, и как часть моего требования мне нужно прочитать файл из класса Test, который находится в одном из каталогов внутри папок test.

Моя иерархия proj выглядит следующим образом ..

src
     --test
        ---java
             --org
                 --sample
                      --- MyTestClass.java
        ---jmeter
               ---load_data.csv

В MyTestClass.java мне нужно прочитать load_data.csv. Мои испытания с File and Path пока не дали результатов

file.exists () всегда дает мне ложь ... Как я могу найти файл и прочитать его

Привет

Ответы [ 3 ]

0 голосов
/ 01 июля 2018

Предполагая, что корнем вашего проекта является родительский элемент src, тогда ваш путь должен быть:

Paths.get("src", "test", "jmeter", "load_data.csv")
0 голосов
/ 03 июля 2018

Вопрос в 2 раза. Как получить доступ к файлу из Maven, и, во-вторых, как получить доступ к файлу из вашего класса. Я предполагаю, что ваша сборка maven не работает, потому что она не прошла тест из-за отсутствующего файла.

Быстрые и грязные способы:

Введите полный путь. В зависимости от операционной системы перейдите к файлу в терминале и введите (OSX и nix): «pwd», скопируйте и вставьте полный путь в новый файл () Windows: эхо% cd% ИЛИ ЖЕ Как построить относительный путь в Java из двух абсолютных путей (или URL)?

Лучшие способы: Возможно, вам следует добавить этот файл в ресурсы. По соглашению вы хотите разместить свои ресурсы в этой папке. Это облегчает доступ к вашим классам, также называемым class.getResource ("somefile.txt"), не нужно беспокоиться об относительном пути. Также он добавляется в вашу флягу, когда вы распространяете свою программу. Структура файла: Соглашение src-> main -> resources -> load_data.csv

В вашем случае src -> test -> resources -> load_data.csv

Теперь, как ссылаться на ресурс из maven. Сложный способ добавления ресурсов во время сборки из документации Maven https://maven.apache.org/plugins/maven-resources-plugin.

<executions>
      <execution>
        <id>copy-resources</id>
        <!-- here the phase you need -->
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
          <resources>          
            <resource>
              <directory>src/non-packaged-resources</directory>
              <filtering>true</filtering>
            </resource>
          </resources>              
        </configuration>            
      </execution>
    </executions>

Если вы не хотите, чтобы testResources были частью основного дистрибутива, вам нужно добавить тестовый профиль и исключить его из основной фазы / сборки. Еще немного документации https://maven.apache.org/plugins/maven-resources-plugin/testResources-mojo.html

0 голосов
/ 01 июля 2018

Добавьте ваш load_data.csv внутри src/test/resources/ и запросите соответственно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...