Pull to refresh

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

Reading time3 min
Views14K

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


Введение


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


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


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


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


тезисы


@ Autowired — Автоматическое связывание


byName–ищет компонент в контейнере, чье имя (или идентификатор) совпадает с именем связываемого свойства. Если соответствующий компонент не найден, свойство останется несвязанным.


byType–ищет единственный компонент в контейнере, чей тип соответствует типу связываемого свойства. Если соответствующий компонент не найден, свойство не будет связано.


constructor–ищет конструктор компонента, куда выполняется внедрение, с компонентами, чьи типы совпадают с аргументами конструктора.


autodetect–сначала пытается выполнить автоматическое связывание через конструктор, а затем по типу


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


После прочтения у вас будет представление о том, как реализовать свой шаблон на 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");


lombok — java либа, которая автоматически генерит методы типо tostring, getter, setter.


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


Скачиваем проект


https://github.com/andewBr/seleniumWithSpring


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


запуска из idea


-Dspring.profiles.active=dev-andrew

запуск всех сценариев, из консоли


clean test -Dspring.profiles.active=dev-andrew

запуск по тега @your_tag_name, из консоли


mvn clean test -Dcucumber.options="--tags @[your_tag_name]" -Dspring.profiles.active=dev-andrew


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


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


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



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



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


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

property.getWeb().getBaseurl();


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


interface Page — метод Map<String, SelenideElement> getElements();



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



package (service)


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



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



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



resources.features -> сами features файлы


Tags:
Hubs:
Total votes 13: ↑8 and ↓5+3
Comments10

Articles