Существуют различия и ограничения в опциях, предлагаемых @Steve C и @ ashosborne1. Они должны быть указаны, я считаю.
Когда мы можем можно использовать: File resourcesDirectory = new File("src/test/resources");
?
- 1 Когда тесты будут выполняться только через maven, но не через IDE.
- 2.1 Когда тесты будут выполняться через Maven или
- 2.2 через IDE, и только один проект импортируется в IDE. (Я использую термин «импортированный», потому что он используется в IntelliJ IDEA. Я думаю, что пользователи eclipse также импортируют свой проект maven). Это будет работать, потому что рабочий каталог при запуске тестов через IDE совпадает с вашим проектом.
- 3.1 Когда тесты будут выполняться через Maven или
- 3.2 через IDE, и более чем один проект импортируется в IDE (если вы не являетесь студентом, вы обычно импортируете несколько проектов), и перед тем, как запускать тесты через IDE, вы вручную настраиваете рабочий каталог для своих тестов. Этот рабочий каталог должен ссылаться на ваш импортированный проект, который содержит тесты. По умолчанию рабочий каталог всех проектов, импортируемых в IDE, только один. Возможно, это ограничение
IntelliJ IDEA
только, но я думаю, что все IDE работают так. И эта конфигурация, которую необходимо выполнить вручную, совсем не годится. Работа с несколькими тестами, существующими в разных проектах maven, но импортированными в один большой проект «IDE», заставляет нас помнить об этом и не дает расслабляться и получать удовольствие от вашей работы.
Решение, предлагаемое @ ashosborne1 (лично я предпочитаю это), требует 2 дополнительных требования, которые должны быть выполнены перед выполнением тестов. Вот список шагов, чтобы использовать это решение:
Создайте тестовую папку («teva») и файл («readme») внутри «src / test / resources /»:
SRC / тест / ресурсы / Teva / ридми
Файл должен быть создан в тестовой папке, иначе он не будет работать. Maven игнорирует пустые папки.
Хотя бы один раз собрать проект через mvn clean install
. Он также будет запускать тесты. Этого может быть достаточно для запуска только вашего тестового класса / метода через maven без создания всего проекта. В результате ваши тестовые ресурсы будут скопированы в тестовые классы, вот путь:target/test-classes/teva/readme
После этого вы можете получить доступ к папке с помощью кода, уже предложенного @ ashosborne1 (извините, я не смог правильно отредактировать этот код внутри этого списка элементов):
public static final String TEVA_FOLDER = "teva"; ...
URL tevaUrl = YourTest.class.getClassLoader().getResource(TEVA_FOLDER);
String tevaTestFolder = new File(tevaUrl.toURI()).getAbsolutePath();
Теперь вы можете запускать тест через IDE столько раз, сколько захотите. Пока вы не запустите mvn clean. Это удалит целевую папку.
Создание файла внутри тестовой папки и запуск maven в первый раз, прежде чем запускать тесты через IDE, являются необходимыми шагами. Без этих шагов, если вы просто в своей среде IDE создаете тестовые ресурсы, а затем пишете test и запускаете его только через IDE, вы получите ошибку. Запуск тестов через mvn копирует тестовые ресурсы в target / test-classes / teva / readme, и они становятся доступными для загрузчика классов.
Вы можете спросить: зачем мне импортировать более одного проекта maven в IDE и почему так много сложных вещей? Для меня одна из главных причин: держать связанные с IDA файлы вдали от кода. Сначала я создаю новый проект в моей IDE. Это фальшивый проект, который просто содержит файлы, связанные с IDE. Затем я импортирую уже существующие проекты Maven. Я заставляю эти импортированные проекты сохранять файлы IDEA только в моем исходном поддельном проекте. В результате я не вижу связанных с IDE файлов среди кода. SVN не должен их видеть (не предлагайте настраивать svn / git, чтобы игнорировать такие файлы, пожалуйста). И это просто очень удобно.