Указание собственного файла log4j.properties для всех тестов JUnit, выполняемых с Eclipse

Я хотел бы указать конкретный Eclipse VM argument для всех тестов JUnit, которые я запускаю из Eclipse i.e.

-Dlog4j.configuration=log4j-dev.properties

Это связано с тем, что я хочу, чтобы определенный файл конфигурации log4j был выбран всеми моими тестами JUnit вместо файла log4j.properties по умолчанию.

На данный момент я должен указать выше VM argument (in Run Configurations -> Arguments -> VM arguments) для каждого из моих тестов JUnit, что делает его громоздким, потому что у меня много тестов.

Ответ 1

Вам не нужно указывать JVM другое имя свойства. Код регистрации выполняет поиск файла log4j.properties с помощью пути к классам. Таким образом, все, что вам нужно сделать, это убедиться, что ваш тестовый файл log4j.properties находится в том месте, которое оно найдет перед файлом релиза.

Я использую Maven, который издает файлы в каталогах, чтобы сделать это легко. Мой выпуск log4j.properties отправляется в каталог src/main/resources. Моя тестовая версия находится в src/test/resources. Путь сборки Eclipse (путь к классам) настроен на поиск src/test/resources до src/main/resources, поэтому ваши модульные тесты используют тестовый файл. Инструкции сборки JAR (или WAR) используют файлы из src/main/resources.

Ответ 2

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

В настройках Java > Установленные JRE и используйте кнопку Добавить..., чтобы определить JRE. В диалоговом окне JRE Определение имеется поле для аргументов VM по умолчанию. Дайте этому определению JRE полезное имя, например "JDK 7 для JUnit", чтобы вы могли легко идентифицировать его.

enter image description here

Затем в вашем запуске JUnit на вкладке JRE выберите созданное вами определение JRE.

enter image description here