Автоматически добавлять свойства при запуске JUnit в Eclipse

17

Для запуска моих модульных тестов на моем Eclipse мне нужно установить некоторые свойства для виртуальной машины.

Таким образом, когда я впервые запускаю свой тест JUnit, я перехожу в «Open Run Dialog», затем в настройке JUnit для этого теста я перехожу на вкладку «Аргументы» и помещаю все, что мне нужно, в текст «аргументы VM» область.

Есть ли способ автоматически добавить набор свойств при запуске моего JUnit, поэтому я смогу только щелкнуть правой кнопкой мыши на тестовом классе и нажать «Запустить как & gt; Junit Test» для запуска теста

Техническая информация: Eclipse 3.3.2, JUnit 4, Java 5

Изменить , в ответ от Аарона Дигуллы:

Эти свойства используются в конфигурационных файлах Spring *. Таким образом, я не могу использовать идею, данную Аароном, поскольку Spring будет инициализирован до запуска теста.

В дополнение к этому, мне просто нужно знать, могу ли я легко достичь этого в Eclipse. Таким образом, решение не должно влиять на компиляцию приложения вне Eclipse, так как мое приложение, наконец, будет скомпилировано (и протестировано) Maven2.

* для нескольких тестов «unit» действительно нужна моя конфигурация Spring. Хорошо, я знаю, что это не настоящие модульные тесты; o)

Изменить 2 . Фактически, я действительно начал настройку Spring тестовой единицей. Таким образом, перед запуском Spring я проверяю свойства System, и если мои свойства не установлены, тогда я даю им требуемое значение ...

Однако, я немного разочарован тем, что Eclipse не может сделать это для меня автоматически ...

    
задан romaintaz 11.03.2009 в 09:09
источник

5 ответов

7

Мое решение - создать абстрактный тестовый базовый класс для всех тестов в проекте, который расширяет TestCase. Он должен быть абстрактным, поэтому автомат для поиска единиц измерения не будет его рассматривать.

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

[EDIT] Вы говорите, что Spring инициализируется до запуска тестов. Это ошибка в вашем проекте: это должны быть те тесты, которые инициализируют Spring. В противном случае вы всегда столкнетесь с проблемой, что вам нужно проверить что-то вне вашего контроля.

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

Кроме того, убедитесь, что среда настроена правильно в setUp () и выдает ошибку, если свойство отсутствует. Таким образом, вы, по крайней мере, знаете, почему тесты не удастся позже. Но я все же предпочитаю иметь полный контроль, когда какая подсистема оживает. Все остальное просто просит бедствия.

    
ответ дан Aaron Digulla 11.03.2009 в 09:48
источник
26

Вы можете попробовать это - перейдите к

 Window->Preferences->Java->Installed JREs

ans выберите JVM в использовании, чем установите prameter по умолчанию VM, например

  -DrunningInEclipse

Чем вы можете проверить в своей тестовой камере:

   System.getProperty("runningInEclipse") != null
    
ответ дан siddhadev 11.03.2009 в 11:26
источник
7

Когда я хочу установить некоторые записи свойств для моего теста junit, я реализую следующие

protected void setUp() throws Exception {
        super.setUp();

        System.setProperty("Property1", "value1");
        System.setProperty("Property2", "value2");
}

Свойства задаются до того, как тестовый метод называется

EDIT: Вы также можете прочитать свойства из файла и в свойствах системы

    
ответ дан Markus Lausberg 11.03.2009 в 10:47
источник
1

Я никогда не понимал, почему конфигурации запуска имеют способ определить переменные среды, но единственным способом добавления системного свойства является добавление аргументов vm.

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

Это работает, поскольку я все еще могу переопределить их или указать их из ANT или Maven, но также может «щелкнуть правой кнопкой мыши» - & gt; Run As - & gt; Junit Проверьте отдельные тестовые файлы.

edit: вот пример получения Spring для необязательной загрузки файла свойств таким же образом, как описано выше:

<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="database.properties"/>
        <property name="ignoreResourceNotFound" value="true" />
        <property name="systemPropertiesMode">
            <util:constant static-field="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.SYSTEM_PROPERTIES_MODE_OVERRIDE" />
        </property>
</bean>
    
ответ дан chillitom 11.03.2009 в 11:21
источник
1

Согласованный использованный метод таким образом в одном из моих тестов junit и он работал



     @BeforeClass
        public static void setupProperties() {
            System.setProperty("catalina.base", "C:\sam-tomcat-7.0.42");
        }

    
ответ дан Harsh Gupta 19.01.2014 в 05:58
источник