Готовый шаблон для тестирования с использованием Spring

Представляю вам — готовый шаблон для тестирования с использованием Spring.


Введение

Цель этой статьи показать, что писать автотесты со Spring проще нежели на чистой Java.
Так же хочу продемонстрировать, насколько Java + Spring упрощает жизнь тестировщикам.


Для кого эта статья

Если у вас стоит необходимость поддержки нескольких профайлов (пр. WEB и MOBILE, COM и RU) — то Spring, как раз для вас.

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


Что вы получите посте прочтения

После прочтения у вас будет представление о том, как реализовать свой шаблон на Java + Spring.


Что необходимо установить.


  • Java 11.
  • maven-3.6.1 и старше.


Приимущества Spring

Spring достаточно популярен, если у вас в автоматизации появится Spring — разработчики конечно скажут вам спасибо.

Я думаю, что Spring в тестировании встречается достаточно редко, т.к. задачи по автоматизации никто не отменял, а времени на развитие, как правило не так много или его совсем нет.

в Spring есть много различных проектов, один из них это Spring Boot — который позволяет конфигурировать Spring автоматически и многие вещи происходят под капотом, написав 3-и строчки мы получаем готовый проект.


Что входит в проект

Cucumber — это пожалуй один из самых популярных фреймворк для автоматизированного тестирования реализующий behavior-driven development подход.

selenide — это вспомогательный фреймворк для написания изящных UI тестов на основе selenium.

WebDriverManager — который берет на себя всю грязную работу по
добавлению переменных для проекта System.setProperty («webdriver.browser.driver»,»/path_to_driver/driver»);

Spring jdbc — упрощает получение доступа к реляционным BD и облегчает работу с SQL.


Скачиваем https://github.com/andewBr/seleniumWithSpring

для запуска проекта необходимо указать в строке VM POTIONS:

    -Dspring.profiles.active=dev-andrew

c9sosuckqk0ox3sq49kxld9r8by.png


структура пакетов и классов


package (config) — конфигурация проекта.


class WebdriverBeanConfig — самый главный класс, происходит инициализация WebDriver.

lllxd4ficfk5cei9xutbsosxwia.png


class DBBeanConfig — класс в котором мы создаем bean для работы с BD, сообщаем Spring где брать dataSource

hx7nefr_z6rq4rcxa8hutjos_5k.png


class PropertiesConfig — класс для работы с данными в древовидном виде

можно искать элемент и так
//    @Value("${habr.url}")
//    private String url;
но так мне нравиться больше))
@Autowired
private PropertiesConfig property;

property.getWeb().getBaseurl();

p3tcbme5vnyexqz3r3frogcxjqm.png


package (page) — пакет для хранения локаторов, web элементы — (как написано в head first java «программируйте на уровне интерфейса.») чем мы и займемся в дальнейшем)


interface Page — метод Map getElements ();

6fqj04pdfuypwy8szko1osn1t8y.png

все остальные классы находящиеся в данном пакете, возвращают MAP<ключ, сам элемент>

vmkap0hzm4vmhqkwj-9p-klf278.png


package (service)


CommanService — класс для работы с SelenideElement в котором мы реализуем работу со страницей

l4lvskzukolauedbwdvratkwbcu.png

класс BasePageService наследуем от класса CommonService и обрабатываем элементы.

xp-i8oysd5amrs1etxquzseut08.png


package step — работа с feature файлами

izljsjszlqvwmgy2h8r3og2z9pi.png


resources.features → сами features файлы

veo7afqfq4isgzopau-kv7mswju.png

© Habrahabr.ru