Java: Как открыть текстовый файл в тесте, который находится в src/main/resources?

мой проект struture выглядит как

project/
       src/main/
               java/ ...
               resources/
                         definitions.txt
               test/
                    CurrentTest.java
               resources/ ...

В моем тесте мне нужно открыть definitions.txt

Я делаю

 @Test
 public void testReadDesiredDefinitions() throws PersistenceException, IOException {
        final Properties definitions = new Properties();
        definitions.load(new ResourceService("/").getStream("desiredDefinitions"));
        System.out.println(definitions);
 }

Когда я запускаю это, я получаю

java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:418)
    at java.util.Properties.load0(Properties.java:337)
    at java.util.Properties.load(Properties.java:325)

Как я могу прочитать этот текстовый файл?

Спасибо

Ответ 1

"Текущий каталог" модульных тестов обычно представляет собой каталог проекта, поэтому используйте это:

File file = new File("src/main/resources/definitions.txt");

и загрузите свойства из файла:

definitions.load(new FileInputStream(file));

Если это не работает или вы хотите проверить, что такое текущий каталог, просто распечатайте путь, и будет очевидно, что представляет собой текущий каталог:

System.out.println(file.getAbsolutePath());

Ответ 2

Вы можете использовать класС# getResourceAsStream, чтобы легко создать поток в файл ресурсов.

definitions.load(getClass().getResourceAsStream("/main/java/resources/definitions.txt"));

Параметр location должен относиться к пути к исходному файлу проекта (моя догадка была основной).

Ответ 3

Если ваш каталог resources является исходной папкой, вы можете использовать /resources/definitions.txt как правильный путь.

Я не знаю о ResourceService, но это должно работать:

final Properties definitions = new Properties();
definitions.load(getClass().getResourceAsStream("/resources/definitions.txt"))

Ответ 4

Файл файла = новый файл ( "../src/main/resources/definitions.txt" );