Невозможно читать файлы ресурсов из src / test / resources в STS
Я создал папку в корневом каталоге проекта, и внутри я добавил файл в папку jsons как
jsons/server_request.json
.
Теперь я пытаюсь прочитать этот файл, вызывая статическую функцию в CommonTestUtilityclass, заданную как:
public class CommonTestUtility {
public static String getFileAsString(String fileName) throws IOException {
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
String content = new String(Files.readAllBytes(file.toPath()));
return content;
}
}
Теперь при вызове этой функции как
class ServerTest {
@Test
void test_loadResource() {
String content = CommonTestUtility.getFileAsString("jsons/server_request.json");
}
}
, Это дает мне ошибку:
CommonTestUtility - Cannot invoke "java.net.URL.getFile()" because the return value of "java.lang.ClassLoader.getResource(String)" is null.
Я попытался включить
src/test/resources/
в конфигурации запуска Junit ServerTest.java, но по-прежнему не может найти ресурс. Как решить эту проблему?
2 ответа
https://mkyong.com/java/java-read-a-file-from-resources-folder/
Эта ссылка выше может быть полезна. Метод getResource () возвращает URI, на который нужно изменить функцию .getFile(). toURI(). Простой код
частный файл getFileFromResource(String fileName) выдает исключение URISyntaxException{
ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource(fileName);
if (resource == null) {
throw new IllegalArgumentException("file not found! " + fileName);
} else {
// failed if files have whitespaces or special characters
//return new File(resource.getFile());
return new File(resource.toURI());
}
}
Я воссоздал тот же сценарий, который вы описываете, и ваш код работает на меня. Не могли бы вы перепроверить, что ваш проект похож на мой ниже? Если так, я подозреваю, что это может быть связано с вашей средой.