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" );