2015-03-05 2 views
2

Мне нужно проверить код приложения Spring, создав тест интеграции Cucumber. Я использую SpringApplicationBuilder запустить мое приложение, прежде чем фактическая логика срабатывает и я использую следующий синтаксис для этого: -Настройка свойств времени выполнения SpringApplicationBuilder()

application = new SpringApplicationBuilder() 
     .parent(new Object[]{"classpath:file1.xml", "classpath:file2.xml"}) 
     .profiles("abc") 
     .properties("name:value") [It has 5/6 (name:value) pairs here]* 
     .showBanner(false) 
     .logStartupInfo(true) 
     .headless(true) 
     .application() 
     .run(); 

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

  • Используя пары значений имени, как описаны выше
  • Использования HashMap (название, значение) пар
  • Создание ConfigurableEnvironment, извлекая MutablePropertySources и устанавливающее свои свойства в Это.

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

Любые идеи, как это можно исправить .. Вся помощь очень ценится!

ответ

0

Свойства, которые вы настраиваете на SpringApplicationBuilder, предоставляются в приложении Environment, а не как системные. Если ваш код это ожидает свойства системы, то вы должны установить их с помощью System.setProperty(key, value) или как -D аргументы при запуске JVM

+0

Или изменить тесты для использования среды Spring. – chrylis

+0

Большое спасибо за ваш ответ. Я понимаю, что вы говорите. Тем не менее, мое приложение ожидает специальных свойств Spring, когда оно запускается с помощью SpringApplicationBuilder. Я пытаюсь моделировать все приложение Spring для моего теста интеграции с Cucumber, как если бы он запускался, когда он запускался за пределами тестовой среды. Следовательно, я, возможно, не смогу использовать свойства System для моего теста. Может ли быть какой-либо способ установить их как специальные свойства приложения Spring? – Hello

+0

Правда, как я могу использовать свои тесты в среде Spring. – Hello

0

Попробуйте аннотирования свой весенний тест интеграции с @TestPropertySource

Пример:

@TestPropertySource(properties={"name1=value1","name2=value2"}) 
Смежные вопросы