как заставить maven использовать тестовые ресурсы

#java #testing #maven

#java #тестирование #maven

Вопрос:

когда я использую команду: mvn test, maven использует основные ресурсы вместо тестовых в src / test /resources.

Как я могу заставить maven использовать тестовые ресурсы, а не основные ресурсы?

РЕДАКТИРОВАТЬ: я использую Classloader для поиска своих ресурсов. Classloader может находить ресурсы из моего каталога src / test / resources, но сначала он ищет ресурс в src / main / java.

 ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream file =loader.getResourceAsStream("resource.xml");
  

Или есть ли какое-либо свойство, которое я могу использовать при выполнении команды maven, которая будет определять приоритетность пути к классу?

РЕДАКТИРОВАТЬ 2: Я разобрался с проблемой, она загружается из test / resources для теста, однако мой тест включает развертывание веб-приложения (интеграционное тестирование), и оттуда, когда веб-приложение обращается к ресурсу, оно использует src / main / resources. Есть ли способ изменить порядок пути к классам или сделать так, чтобы один предшествовал другому для WAR, развернутого в контейнере jetty?

Комментарии:

1. пожалуйста, не задавайте один и тот же вопрос снова, отредактируйте свой существующий вопрос с любыми соответствующими обновлениями вместо этого, которые придадут вашему вопросу импульс. Спасибо.

Ответ №1:

Пожалуйста, проверьте ваш каталог target / test-classes на resource.xml . Ваш файл должен быть здесь. Если вы найдете этот файл, я думаю, что проблема в том же имени. Попробуйте переименовать файл, например, в test-resource.xml . Если файл не существует в каталоге test-classes, вам следует настроить управление ресурсами в maven pom.xml . Используйте maven-resouce-plugin. Надеюсь, это поможет.

Ответ №2:

Вы не можете дать ему другое имя?
Загрузчик не знает, что ваш resource.xml находится в src/main/resources или src/test/resources , это всего лишь путь для поиска. Я думаю, проблема не в Maven, а в том, как должен работать загрузчик, и это работает. Ожидаете ли вы, что из Maven будут удалены все классы / ресурсы из src/main/resources при выполнении этапа тестирования?

Комментарии:

1. Не знаю. Возможно, вы можете настроить surefire или загрузить ресурс вручную в свой тестовый класс.

2. Я разобрался с проблемой, она загружается из test / resources для теста, однако мой тест включает развертывание веб-приложения (интеграционное тестирование), и оттуда, когда веб-приложение обращается к ресурсу, оно использует src / main / resources. Есть ли способ изменить порядок пути к классам или сделать так, чтобы один предшествовал другому для WAR, развернутого в контейнере jetty? Я обновлю свой вопрос