Представляю вам — готовый шаблон для тестирования с использованием 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 и обрабатываем элементы.