Как использовать рабочий каталог по умолчанию для конфигураций запуска JUnit в Eclipse?
-
02-07-2019 - |
Вопрос
Наш Java-код (а не тестовый код) считывает файлы из текущего каталога, а это означает, что рабочий каталог необходимо правильно устанавливать каждый раз, когда мы запускаем код.
При запуске теста JUnit из Eclipse автоматически создается конфигурация запуска.Проблема в том, что рабочий каталог в этой конфигурации запуска всегда по умолчанию является корневым каталогом проекта, что всегда неверно, тест завершается неудачей, мне приходится открывать диалоговое окно конфигурации запуска, менять рабочий каталог и перезапускать тест.Это очень раздражает.То же самое происходит, когда я запускаю один метод тестирования.
Я уже рассмотрел эти:
- Изменение текущего каталога из тестового кода — невозможно по замыслу.
- При открытии файла передавать параметр родительского каталога — слишком сложно, поскольку это затронет множество мест.
- Использовать Копировать конфигурацию запуска функция Eclipse для создания новых конфигураций запуска из существующих, для которых уже установлен правильный рабочий каталог.Здесь это не имеет смысла, поскольку я хотел бы быстро запустить тест или метод тестирования, просто вызвав «запустить этот тест/метод как тест JUnit».
В общем, похоже, что за это отвечает Eclipse, а не код.
Есть ли способ установить по умолчанию рабочий каталог для все будущее, вновь созданное Конфигурации запуска JUnit?
Решение 2
Насколько я могу судить, нет возможности изменить рабочий каталог по умолчанию для будущих конфигураций запуска JUnit в Eclipse 3.4.Этот вопрос также был зарегистрировано как ошибка в базе данных ошибок Eclipse.
Однако в IDEA это возможно.Вот Изменить настройки по умолчанию кнопка для установки всех видов настроек по умолчанию для каждого типа конфигурации запуска отдельно.
Другие советы
Это субъективный ответ:
Я считаю, что вы неправильно выполняете тесты, вам не следует загружать файлы из JUnit, используя относительные или полные пути, а вместо этого использовать их в качестве ресурсов в проекте (добавьте их в путь сборки) и загружать их как ресурсы. в тестах JUnit.Таким образом, если что-то изменится в файловой системе, кто-то использует другую файловую систему или IDE, но они все еще находятся в пути сборки (в качестве исходных папок), у вас не возникнет проблем.
Я не уверен, что вы это имеете в виду, но если вы действительно хотите его изменить, перейдите в «Параметры запуска конфигурации» -> «Ваш JUnit» -> вкладка «Аргументы», внизу (Eclipse 3.4) вы видите «Рабочий каталог», нажмите «Другое» и измените его оттуда.
С Eclipse 3 вы можете установить рабочий каталог.Перейдите к конфигурации запуска/отладки -> вкладка «Аргументы».В рабочем каталоге выберите «другое» и введите корень вашего теста.
Я не нашел возможности сделать это, но вы можете использовать:
getClass().getResourceAsStream(имя файла);
getClass().getClassLoader().getResourceAsStream(имя файла);
Этот метод находит ресурс в пути к классам.Первый относится к местоположению класса, второй — к любой «корневой записи» пути к классам.Затем вы можете, например, добавить корневой каталог проекта в путь к классам.
Однако это не работает, если вы также хотите записать в файл.
Если ваши тесты зависят от текущего рабочего каталога, я думаю, что ваши тесты обязаны правильно настроить этот рабочий каталог и настроить тестируемые классы для указания этого каталога.
Если у вас есть суперкласс для большинства ваших тестов, напишите в нем константу.Или:если у вас есть суперкласс для большинства ваших тестов, напишите метод установки @Before.Или:Если у вас нет суперкласса для большинства ваших тестов, напишите константу в каком-нибудь классе кодовой базы тестирования.