#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? Я обновлю свой вопрос