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

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

Наш код Java (а не тестовый код) считывает файлы из текущего каталога, что означает, что рабочий каталог должен быть установлен правильно всякий раз, когда мы запускаем код.

При запуске теста JUnit из Eclipse автоматически создается конфигурация запуска. Проблема заключается в том, что рабочий каталог в этой конфигурации запуска всегда по умолчанию является корневым каталогом проекта, который всегда ошибочен, тест терпит неудачу, я должен открыть диалог конфигурации запуска, изменить рабочий каталог и повторно запустить тест. Это очень раздражает. То же самое происходит, когда я запускаю один метод тестирования.

Я уже рассматривал это:

  • Изменение текущего каталога из тестового кода - невозможно по дизайну.
  • При открытии файла передайте параметр родительского каталога - слишком сложно, так как это повлияет на множество мест.
  • Используйте функцию конфигурации запуска копирования Eclipse для создания новых конфигураций запуска из существующих, у которых уже есть правильный набор рабочих каталогов. Это действительно не имеет смысла здесь, так как я хотел бы быстро запустить тест или метод тестирования, просто вызвав "запустить этот тест/метод как тест JUnit".

В целом, это похоже на ответственность Eclipse, а не на код.

Есть ли способ установить рабочий каталог по умолчанию для всех будущих, вновь созданных конфигураций запуска JUnit?

4b9b3361

Ответ 1

Насколько я могу судить, нет способа изменить рабочий каталог по умолчанию для будущих конфигураций запуска JUnit в Eclipse 3.4. Эта проблема также была сообщена как ошибка в базе данных ошибок Eclipse.

Однако это возможно в IDEA. Там кнопка Изменить значения по умолчанию для установки всех видов значений по умолчанию для каждого типа конфигурации запуска отдельно.

Ответ 2

Это субъективный ответ:

Я считаю, что вы неправильно делаете свои тесты, вы не должны загружать файлы из JUnit с использованием относительных или полных путей, но вместо этого имейте их как ресурсы в проекте (добавьте их в путь сборки) и загрузите их как ресурсы в тестах JUnit. Таким образом, если что-то меняется в файловой системе, кто-то использует другую файловую систему или IDE, но все еще имеет их в пути сборки (в качестве исходных папок), у вас не будет проблемы.

Я не уверен, что это то, что вы имеете в виду, но если вы действительно хотите его изменить, перейдите к параметрам Run Configuration → Your JUnit → Arguments, внизу (Eclipse 3.4) вы увидите Рабочий каталог, другой "и изменить его оттуда.

Ответ 3

С Eclipse 3 вы можете установить рабочий каталог. Перейдите к настройке запуска/отладки → вкладка "Аргументы". В рабочем каталоге выберите "other" и введите корень вашего теста

Ответ 4

Я не нашел возможности сделать это, но что вы можете сделать, это использовать:

GetClass() getResourceAsStream (имя файла);.

GetClass() getClassLoader() getResourceAsStream (имя файла);..

Эти методы определяют ресурс в пути к классам. Первый из них относится к местоположению класса, второй относится к любому корневому входу класса. Затем вы можете добавить корневой каталог проекта в путь к классам.

Это не работает, если вы также хотите записать в файл.

Ответ 5

Если ваши тесты зависят от текущего рабочего каталога, я считаю, что ваши тесты корректно настраивают этот рабочий каталог и настраивают ваши классы для тестирования, чтобы указать этот каталог.

Если у вас есть суперкласс для большинства ваших тестов, напишите в нем константу. Или: если у вас есть суперкласс для большинства ваших тестов, напишите метод @Before. Или: если у вас нет суперкласса для большинства ваших тестов, напишите константу в каком-то классе тестовой кодовой базы.