Найти тему

Intellij IDEA JAVA первые шаги перед запуском теста

Оглавление

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

Написание тестов

Тесты, где используется Maven для сборки проекта, должны лежать в пакете src/test/java. Внутри этого пакета тесты делятся на разные классы и даже пакеты для более удобного запуска:

-2

По умолчанию тесты размещаются в классе, имеющем в названии слово Test, TestCase или Tests.
Тест включает в себя следующие шаги:

  • инициализация окружения;
  • инициализация переменных;
  • выполнение функциональной части (шагов теста), которая обычно размещается непосредственно в коде проверки;
  • проверки (asserts), в которых актуальный результат сравнивается с ожидаемым.

Инициализация окружения

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

То есть перед тестом нужно запустить то, что нужно для самого теста. Для этого есть удобные аннотации:

  • @BeforeAll - действия перед всеми тестами
  • @BeforeEach - действия перед каждым тестом

И по аналогии после тестов нам могут потребоваться аннотации:

  • @AfterAll - действия после всех тестов
  • @AfterEach - действия после каждого теста

Покажу на примере , что нужно для открытия поисковой строки GoogleChrome:

-3

И всё, никаких сложностей! Всё что мы сделали это инициализировали WebDriverManager (рассказывал о нём в предыдущих постах) и ChromeDriver. Этого достаточно для запуска браузера.

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

В результате проверка одного элемента может потребовать написания нескольких десятков строк кода только для его запуска! Давайте попробуем упростить этот процесс.

Предлагаю отделить инициализацию от самих тестов. Мы можем создать абстрактный класс, в котором инициализируем нужные переменные, а затем создать класс с тестами и унаследовать его от абстрактного класса. Это позволит нам разделить логику тестов!

Создаём Абстрактный класс:

-4

Создаём класс с тестами:

-5

Как итог мы запустили 2 теста, один открывает Яндекс, другой Гугл. И нет никакого повтора кода, в дальнейшем будем также наследоваться от абстрактного класса и все нужные переменные будут подтягиваться в самом тесте!

-6

Инициализация переменных

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

-7

Запускаем тест, где делаем вывод в консоль:

-8

После тестов

Как уже говорил, есть аннотации @AfterAll и @AfterEach, ими можно пользоваться, если нужно сделать что то после каждого теста или только после всех. К примеру есть тесты, которые нужно запустить только после того как прошли все основные тесты, вот тогда и используем @AfterAll.

В других же случаях не советую использовать эти аннотации, к примеру после открытия браузера его нужно закрывать с помощью driver.quit();

Эту команду можно использовать в конце теста или же в аннотации, но это работает только в тепличных условиях! На деле же у вас будет множество тестов, которые будут падать, сигнализируя тем самым появление ошибок. И если у вас стоит driver.quit(); в конце теста, то браузер попросту не закроется, код не дойдёт до этого места.

В дальнейшем разберём, что же делать в таких случаях, какая аннотация будет эффективней и удобней, чем @AfterAll.

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

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