Quarkus в тестовом профиле имеет другой рабочий каталог, чем в режиме разработки, что создает проблемы с путями доступа к файлам ресурсов.

Имея file.txt внутри папки resources. И наличие Bean для загрузки этого файла в стартовом жизненном цикле приложения:

В профиле разработки при компиляции и запуске папка resources копируется в каталог build (или target с maven), а рабочий каталог относится к файлу ресурсов, поэтому нет необходимости указывать специальный путь или что-то еще.

Так что в основном достаточно определить имя файла в application.properties.


В тестовом профиле рабочий каталог - это корень проекта, поэтому этот файл больше нельзя найти, не указав полный относительный путь к папке resources.

Есть ли способ указать тестовый профиль Quarkus и / или аннотацию конфигурации Microprofile для поиска в папке ресурсов для загрузки некоторых ресурсов, когда это необходимо?

Я не нашел ничего, кроме обхода этой неаккуратной разницы в профилях.


person Raffaello    schedule 22.02.2020    source источник
comment
Вы пробовали поместить нужные файлы в раздел test / resources и выполнить тест?   -  person iabughosh    schedule 22.02.2020
comment
да, я пробовал и такую ​​же ошибку. файл должен находиться на том же пути к корневой папке проекта, где также запускается оболочка maven | gradle. если файл там находится, можно его найти ..   -  person Raffaello    schedule 22.02.2020


Ответы (2)


Я не знаю, есть ли что-то, что мы можем сделать здесь автоматически, gradle / maven контролируют рабочий каталог процесса тестирования. По крайней мере, с помощью maven вы можете контролировать рабочий каталог надежного процесса, см. Этот ответ здесь: Maven: изменить каталог, в котором выполняются тесты

person Stuart Douglas    schedule 23.02.2020
comment
Плагин quarkus не может иметь дополнительный контроль над профилями? Вероятно, будет достаточно того, что каталог ресурсов имеет свойство quarkus, поэтому путь может быть построен независимо от рабочего каталога ... В любом случае, спасибо, конечно, это тоже не может быть приоритетом. - person Raffaello; 23.02.2020

Я решил, используя профилированную конфигурацию, в моем случае кажется, что при тестировании корневая папка - это корневая папка проекта, а в режиме разработки - целевая папка, поэтому я использовал эту конфигурацию в своем файле свойств:

cv-store-folder=./stored-cvs/
%dev.cv-store-folder=../stored-cvs/

Надеюсь, это поможет тебе.

person Nather Webber    schedule 03.10.2020