Хобрук: Ваш путь к мастерству в программировании

junit не загружает файл свойств

Я пытаюсь запустить некоторые тесты, которым нужны значения из файла .properties, который я использую в производстве. Я могу убедиться, что тест получает местоположение файла свойств через -DapplicationProperties="fname", однако он не анализируется. Я также использую Spring, это Spring обычно анализирует это для меня? Если нет, должен ли junit делать это автоматически? Если нет, то как лучше всего обеспечить доступность свойств для всех моих тестов через System.getProperty()?

25.01.2012

Ответы:


1

Ни Spring, ни JUnit не анализируют файлы свойств только потому, что есть параметр.

Для загрузки файлов свойств в Spring проще всего использовать org.springframework.beans.factory.config.PropertyPlaceholderConfigurer

См. Справочник по Spring: 3.8.2.1 Пример: PropertyPlaceholderConfigurer пример.

См. этот блог, чтобы узнать, как различать различные типы свойств и способы их хранения: http://www.summa-tech.com/blog/2009/04/20/6-tips-for-управлениефайламисвойствспомощьюSpring/

26.01.2012
  • хм, может быть, это то, что анализирует это? <context:component-scan base-package="com.stuffs.controller" /> 27.01.2012
  • @ Джош, я не понимаю твоего комментария! 27.01.2012
  • Извините, у меня есть указанная выше строка в моем файле dispatcher-servlet.xml. Может ли это быть причиной того, что файл свойств анализируется весной? 27.01.2012
  • нет - он ищет классы с аннотациями @Respository, @Service, @Controller, @Component в com.stuffs.controller и подпакетах и ​​создает их экземпляры. 27.01.2012
  • тогда я не уверен, как анализируется файл свойств. Как я уже сказал, мы передаем аргумент -DapplicationProperties=path/here/something.properties в jvm, и я могу это подтвердить. Я продолжу искать... 27.01.2012
  • ну, я не уверен, где используется этот аргумент виртуальной машины ... но я пытаюсь использовать его в своем тесте для загрузки файла свойств, примерно так: stackoverflow.com/questions/6296539/ или это: stackoverflow.com/questions/4777252/ .. но я все еще получаю null, когда пытаюсь получить свойство что я знаю, существует в файле. 28.01.2012

  • 2

    Я создал библиотеку под названием Системные правила для тестирования кода, использующего java.lang.System. Используя эту библиотеку, вы пишете такие тесты JUnit:

    import static org.junit.Assert.assertEquals;
    import org.junit.contrib.java.lang.system.ProvideSystemProperty;
    import org.junit.Rule;
    import org.junit.Test;
    
    public void MyTest {
      @Rule
      public ProvideSystemProperty myPropertyHasMyValue
        = new ProvideSystemProperty("MyProperty", "MyValue");
    
      @Test
      public void propertyIsThere() {
        assertEquals("MyValue", System.getProperty("MyProperty"));
      }
    }
    

    Также можно использовать свойства из файлов свойств:

    @Rule
    public ProvideSystemProperty properties
     = ProvideSystemProperty.fromFile("/home/myself/example.properties");
    

    or

    @Rule
    public ProvideSystemProperty properties
     = ProvideSystemProperty.fromResource("example.properties");
    
    26.01.2012
  • Я бы предпочел использовать файл свойств, который использовался в производстве, на случай, если он изменится в будущем. 27.01.2012
  • System Rules 1.1.0 поддерживает файлы свойств. 01.02.2012
  • поэтому (из двух новейших примеров) я мог бы использовать System.getProperty("somethingFromTheFile"); после загрузки файла? Это цель. UCP Oracle нуждается в этом свойстве, поэтому оно должно быть доступно через System.getProperty (афаик). 10.02.2012
  • Да, вы можете использовать свойство из файла в своем тесте. 12.02.2012
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

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

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..