Как использовать рабочий каталог по умолчанию для конфигураций запуска JUnit в Eclipse?

StackOverflow https://stackoverflow.com/questions/119832

Вопрос

Наш 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.Или:Если у вас нет суперкласса для большинства ваших тестов, напишите константу в каком-нибудь классе кодовой базы тестирования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top