Найти в Дзене

Как настроить перезапуск упавших тестов в Intellij IDEA JAVA? Часть 1.

В процессе запуска автотестов, часто бывает такое, что тест может упасть по неочевидным причинам. К примеру он может упасть, просто потому что подвис сервер. Или же на агенте закончилось место и время ожидания страницы увеличилось, а вы поставили небольшое время ожидания. В общем причин для падения теста, очень много. Единственное что может помочь, просто перезапустить наш тест. Об этом мы сегодня и поговорим. Для начала разберём как это будет происходить, а уже после постепенно начнём наращивать наш проект. Звучит не сложно, давайте разбираться по порядку. Для начала создадим тест, который явно будет содержать ошибку. Самый простой способ это сравнить 2 разных числа. Так как 1 не равно 2, то будет ошибка. Весь проект я выгружаю в публичный репозиторий, вы можете его себе клонировать. У нас с вами есть специальный класс, который умеет запускать сценарии в случае успешного и ошибочного теста. О нём я рассказывал в данной статье: То есть сейчас нам нужно добавить в него метод, который с
Оглавление

В процессе запуска автотестов, часто бывает такое, что тест может упасть по неочевидным причинам. К примеру он может упасть, просто потому что подвис сервер. Или же на агенте закончилось место и время ожидания страницы увеличилось, а вы поставили небольшое время ожидания. В общем причин для падения теста, очень много. Единственное что может помочь, просто перезапустить наш тест. Об этом мы сегодня и поговорим.

План действий

Для начала разберём как это будет происходить, а уже после постепенно начнём наращивать наш проект.

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

Звучит не сложно, давайте разбираться по порядку.

Реализация

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

-2

Так как 1 не равно 2, то будет ошибка.

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

GitHub - Timurchik57/JAVA

У нас с вами есть специальный класс, который умеет запускать сценарии в случае успешного и ошибочного теста. О нём я рассказывал в данной статье:

-3

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

Но для начала нам нужно получить это название)

Сохраняем название теста в Properties

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

Про абстрактный класс тут:

Создадим новую переменную

-4

Это специальная переменная, благодаря которой мы можем брать название класса, метода и даже DisplayName нашего теста.

-5

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

У нас есть с вами properties. Куда мы можем сохранять различные переменные, используемые в тестах. Давайте туда же и будем записывать наши название тестов.

-6

Напишем метод, который будет это делать за нас)

-7

Теперь можно записывать эти значения в Properties. Мы уже разобрали тему как это можно сделать и написали ёмкий метод для записи. Вот эта статья:

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

-8

Теперь данный метод можно спокойно помещать перед каждым тестом.

-9

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

-10

А в Properties записались названия нашего класса, метода и DisplayName.

-11

Не пугаемся что в DisplayName иероглифы. Так Java сохраняет кириллицу. Если мы напечатаем все 3 переменные в консоль, то там будет читаемое название)

-12

В следующей статье продолжим усовершенствовать наш проект.

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

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