работа с properties files java


(tshcherbyna) #1

Подскажите как решить следующую задачу.
Тесты выполняются для разных значений, которые записаны в проперти файле.
Есть properties файл, в котором следующая информация:

#name1
#name2
#name3

мне необходимо зайти в этот файл и расскоментировать, например, name1
а затем запустить тест.
Подскажите пожалуйста, как это можно сделать?
Спасибо


(Александр Таранков) #2
  1. исходные тестовые данные хранишь в файле, например testData.ini
  2. в тесте читаешь содержимое файла testData.ini в String
  3. регекспом убираешь символ комментария для нужной строки и сохраняешь полученную строку в новый файл, типа testTmp.ini
  4. запускаешь тест, подавая ему на вход файл testTmp.ini
  5. по окончании теста удаляешь файл testTmp.ini

(Александр Таранков) #3

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


(Sergey Korol) #4

DataProvider как раз хорошо подойдет для этой цели.


(Максим Малунов) #5

    public static String loadProperty(String name) {
            Properties prop = new Properties();
            try {
               prop.load(PropertyLoader.class.getResourceAsStream(PROP_FILE));
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            String value = "";
    
            if (name != null) {
                value = prop.getProperty(name);
            }
            return value;
        }

что то такое в классе и обращаешся к методу .


(sidelnikovmike) #6

каждый раз читать property - дорогвато. ну и сам метод можно написать проще.
+ этот метод просто читает проперти по имени.

По поводу решения задачи - если хочется разные проперти - может быть лучше иметь разнын проперти файлы?


(Максим Малунов) #7

csv файл не пойдет ?
В @DateProvider считывать


(Irish) #8

оптимально


(tshcherbyna) #9

спасибо всем за ответы. По поводу Data Provider обязательно посмотрю. А насчет того, что бы иметь разные проперти фалы, было бы очень удобно, но проперти файл - один и это файл приложения, которое я тестирую, т.к счысл и заключается в том, что бы просто влезть в него и закомментировать там то, что не надо, а потом разкомментировать.Как-то так


(Александр Таранков) #10

Вот тут всё-таки надо понимать, что просто брать файл приложения и использовать его для теста - в общем случае неправильно. Потому что:

  1. нет понимания что тестируется. Что за значение берется, как оно должно обрабатываться системой, какую реакцию ожидать?
  2. нет контроля полноты покрытия тестами. Какие ситуации есть в файле сейчас и какие могут быть - в общем случае разные вещи

Поэтому в общем случае более правильно всё-таки для тестов иметь файл с тестовыми данными, которые отражают все возможные ситуации из боевого файла.

P.S. Я подчеркиваю про общий случай, потому что в частных случаях, в принципе, можно использовать и боевые данные для тестов без предварительной фильтрации. Но это должно быть продуманное решение с пониманием возможных последствий