Подтвердить что ты не робот

Проблема с классом, использующая JUnit с Eclipse и Maven

В тесте JUnit я использую этот код для загрузки в тестовом файле конфигурации:

InputStream configFile = getClass().getResourceAsStream("config.xml");

Когда я запускаю тест через eclipse, он требует, чтобы файл xml находился в том же каталоге, что и тестовый файл.

Когда я создаю проект с помощью maven, он требует, чтобы xml находился в src/test/resources, поэтому он копируется в target/test-classes.

Как я могу заставить их работать только с одним файлом?

4b9b3361

Ответ 1

Поместите файл config.xml в src/test/resources и добавьте src/test/resources в качестве исходной папки в Eclipse.

Другая проблема заключается в том, как getResourceAsStream("config.xml") работает с пакетами. Если класс, вызывающий это, находится в пакете com.mycompany.whatever, тогда getResourceAsStream также ожидает, что config.xml будет в том же пути. Тем не менее, это тот же путь в пути к классам, а не в файловой системе. Вы можете поместить файл в ту же структуру каталогов в src/test/resources - src/test/resources/com/mycompany/whatever/config.xml - или вы можете добавить ведущий "/" к пути - это делает getResourceAsStream загрузите файл из базы pathpath - поэтому, если вы измените его на getResourceAsStream("/config.xml"), вы можете просто поместить его в файл src/test/resources/config.xml

Ответ 2

Попробуйте добавить каталог src/test/resources/ в качестве исходной папки в проекте Eclipse. Таким образом, это должно быть на пути к классу, когда Eclipse пытается запустить ваш unit test.

Ответ 3

Я знаю, что это старый вопрос, но я наткнулся на него и счел странным, что ни один из вышеупомянутых ответов не упоминает Maven Eclipse Plugin. Запустите mvn eclipse:eclipse, и он добавит ресурсы src/main/resources и src/test/resources и т.д. В "путь сборки Java" в Eclipse для вас.

У него есть куча вещей, которые вы можете настроить оттуда тоже (если вам нужно отклоняться от условных обозначений, если вы этого не сделаете, то он уже готов к работе):

В общем, если вы используете Maven, не вручную меняйте материал в Eclipse. Никогда не делайте свой .classpath/.project и вместо этого используйте Maven Eclipse Plugin для создания этих файлов (и/или их обновления). Таким образом, у вас есть ОДИН источник конфигурации для вашего проекта, MAVEN, а не ручные настройки, которые вы должны сказать другим, чтобы использовать и помнить себя и так далее. Если это проект Maven: проверьте его из источника управления, запустите "mvn eclipse: eclipse", и он должен работать в Eclipse, если он не работает с вашим POM.

Ответ 4

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

new FileInputStream(new File("target/test-classes/your.file"));

не очень, но работает