Найти в Дзене

Что такое Properties в Intellij IDEA JAVA.

Оглавление

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

Если вам не понятна структура проекта, то советую сначала ознакомиться с предыдущими статьями, например:

Как можно передать переменную в другой тест

Давайте представим в рамках теста, что с веба мы берём какое то наименование.

-2

Для данного локатора создадим нужную переменную

-3

В итоге в тесте получим данное наименование

-4
//Результат - Developer Tools

А если нам понадобится этот параметр в другом тесте? Давайте сделаем его общим. Заодно напишем второй тест, в котором попробуем вывести этот параметр в консоль.

Также установим последовательность запуска тестов "@Order"

-5
  • Запустим сначала 2 теста в одном прогоне. Во втором тесте результат будет - null
  • Запустим по отдельности 2 теста . Во втором тесте результат будет - null
  • Установим static для переменной. Запустим 2 теста в одном прогоне. Во втором тесте результат будет - Developer Tools
-6

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

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

Файл с переменными

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

И такой способ есть - это Properties. У нас есть специальный блок, где мы можем хранить какие либо переменные в специальном файле.

-7

Создадим файл с нужной аннотацией my.properties. Название можете дать любое, я назвал my.

-8

Для Записи из данного файла нам нужно использовать следующую структуру

FileInputStream in = new FileInputStream("src/test/resources/my.properties");
Properties props = new Properties();
props.load(in);
in.close();
FileOutputStream out = new FileOutputStream("src/test/resources/my.properties");
props.setProperty("Название переменной", "Переменная");
props.store(out, null);
out.close();

Импортируем нужные библиотеки. Выставляем исключение

import java.util.Properties;

"src/test/resources/my.properties" - это путь до нашего файла, он может быть у вас другой.

Теперь мы можем использовать методы от этой библиотеки на запись и чтение

props.setProperty("Название переменной", "Переменная"); - Замена
props.getProperty("Название переменной"); - чтение

Давайте используем эти знания в наших тестах.

-9

Но это выглядит слишком громоздко, нам приходится каждый раз заново создавать Properties. Давайте автоматизируем этот процесс!

Для начала вынесем Properties в абстрактный класс, чтобы она была доступна во всех тестах.

-10

Теперь для чтения достаточно прописать следующее

-11

Для записи создадим отдельный метод

-12

В тесте запись в Properties будет выглядеть следующим образом

-13

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

Для чтения переменной примерно такой же синтаксис, напишем сразу метод:

-14

В тесте это будет выглядеть следующим образом

-15

Со всеми данными методами вы можете ознакомиться и загрузить себе на GitHub

GitHub - Timurchik57/JAVA

Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!

Обучение тестированию