Статьи

JUnit 5 и Selenium — Настройте проект с помощью Gradle, JUnit 5 и Jupiter Selenium

Selenium — это набор инструментов и библиотек, поддерживающих автоматизацию браузера, и он в основном используется для тестирования веб-приложений. Одним из компонентов Selenium является Selenium WebDriver, который предоставляет клиентскую библиотеку, проводной протокол JSON (протокол для связи с драйверами браузера) и драйверы браузера. Одним из основных преимуществ Selenium WebDriver является то, что он поддерживается всеми основными языками программирования и может работать во всех основных операционных системах.

В этом руководстве я рассмотрю настройку проекта автоматизации тестирования для популярного приложения TodoMVC, использующего Gradle с Java, JUnit 5 и Selenium Jupiter. Вы узнаете о PageFactory компании Selenium для реализации шаблона Page Object. Вы также узнаете о параллельном выполнении тестов, порядке выполнения тестов, параметризованных тестах и ​​многом другом.

Об этом уроке

Вы читаете первую часть JUnit 5 с Selenium WebDriver — Tutorial .

Все статьи в этом уроке:

  • Настройте проект с нуля — Gradle с JUnit 5 и Jupiter Selenium

Далее:

  • Использование встроенной в PageFactory для реализации шаблона объекта Page
  • Улучшение конфигурации проекта — параллельное выполнение тестов, порядок выполнения тестов, параметризованные тесты, AssertJ и многое другое

Исходный код этого руководства можно найти на Github.

Предпосылки

Прежде всего, требуется Java JDK, и он должен быть установлен в вашей системе. Я буду использовать Java 12 и рекомендую установить OpenJDK вместо Oracle JDK из-за изменений в лицензировании Java 11. Вам также понадобится Gradle для запуска нового проекта и вашей любимой Java IDE — я рекомендую IntelliJ IDEA Community или Professional. При желании вы также можете установить систему контроля версий Git .

Для управления (установки, обновления, удаления) инструментов я рекомендовал использовать менеджер пакетов. Если вы работаете в Windows, вы можете использовать Chocolately , если вы используете MacOS, вы должны использовать Homebrew .

Подводя итог, убедитесь, что у вас установлены и доступны следующие инструменты при работе с проектом в этой статье:

  • Java JDK — рекомендуется самая новая версия Java JDK
  • Gradle — требуется только для настройки проекта, рекомендуется Gradle 5.6+
  • Ваш любимый Java IDE — IntelliJ IDEA Community или Professional рекомендуется
  • Браузер Chrome — для запуска тестов Selenium
  • Terminal Emulator — для выполнения команд оболочки с минимальной базовой поддержкой команд Unix. В Windows это может быть Cmder (с Git), в macOS я рекомендую iTerm2
  • Git — если вы хотите отслеживать историю вашего исходного кода

Настройте проект с нуля

Чтобы создать пустой проект на основе Gradle, откройте ваш любимый терминал и введите:

1
2
3
mkdir junit5-selenium-todomvc-demo
cd junit5-selenium-todomvc-demo
gradle init --type basic --dsl groovy

Сгенерированный проект — пустой, сделай сам проект — без плагинов и никаких зависимостей. Он поставляется с избыточным settings.gradle который можно удалить:

1
rm settings.gradle

Java и JUnit 5

Для базовой конфигурации проекта Java с JUnit 5 добавьте следующее содержимое в build.gradle :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
plugins {
 id 'java'
}
 
repositories {
  mavenCentral()
}
 
dependencies {
 testImplementation('org.junit.jupiter:junit-jupiter:5.5.1')
}
 
test {
 useJUnitPlatform()
 testLogging {
  events "passed", "skipped", "failed"
 }
}

Приведенный выше DSL настраивает подключаемый модуль Gradle для Java ( plugins ), который предоставляет нам возможности для создания проектов на основе Java с помощью Gradle. В проекте используется репозиторий Maven ( repositories ) для загрузки проектных зависимостей ( dependencies ), которые объявлены в проекте. Зависимость реализации теста для проекта установлена ​​в JUnit 5 ( testImplementation ), и задача корректируется ( test ), чтобы убедиться, что JUnit 5 используется при выполнении тестов с Gradle.

Конфигурация может быть проверена путем выполнения сборки Gradle в терминале:

1
./gradlew build

Сборка прошла успешно:

1
2
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

./gradlew запускает Gradle Wrapper вместо глобального распространения Gradle. Проект был сгенерирован с помощью Gradle Wrapper, и поэтому глобальное распространение Gradle вообще не требуется для выполнения задач и работы с проектом.

Примечание. Если вы ищете шаблоны проектов JUnit 5 для Gradle или Maven, обратитесь к официальному репозиторию JUnit 5 Samples Github: https://github.com/junit-team/junit5-samples.

Юнит Юпитер

Чтобы упростить настройку Selenium WebDriver в проекте, я собираюсь использовать Selenium Jupiter, который является расширением JUnit 5, предназначенным для облегчения использования Selenium (WebDriver и Grid) в тестах JUnit 5. Он представляет собой отдельную зависимость, которую необходимо добавить в список зависимостей в build.gradle :

1
2
3
dependencies {
  testCompile('io.github.bonigarcia:selenium-jupiter:3.3.0')
}

Библиотека Selenium Jupiter обеспечивает интеграцию с Selenium и Appium. Selenium Jupiter поддерживает локальные и удаленные браузеры, браузеры в контейнерах Docker (требуется механизм Docker), а также конфигурацию браузера на основе Selenide. Он использует WebDriverManager для управления драйверами браузера.

Примечание: не удивляйтесь, увидев много библиотек в вашем проекте. Селний Юпитер имеет много зависимостей. Чтобы увидеть все зависимости проекта (включая транзитивные зависимости), выполните следующую команду: ./gradlew dependencies .

Каталоги и файлы проекта

Проект был создан без исходных файлов Java. Для создания исходного каталога и первого теста могут быть выполнены следующие команды:

1
2
mkdir -p src/test/java/pl/codeleak/demos/selenium/todomvc
touch src/test/java/pl/codeleak/demos/selenium/todomvc/SeleniumTest.java

Файл SeleniumTest.java содержит очень простой тест, подтверждающий, что проект настроен правильно. В тесте используется расширение JUnit 5, предоставленное Selenium Jupiter, и оно имеет один тест без утверждений:

01
02
03
04
05
06
07
08
09
10
11
12
13
package pl.codeleak.demos.selenium.todomvc;
 
import io.github.bonigarcia.seljup.SeleniumExtension;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.openqa.selenium.chrome.ChromeDriver;
 
@ExtendWith(SeleniumExtension.class)
class SeleniumTest {
 
    @Test
    void projectIsConfigured(ChromeDriver driver) {}
}

Запуск теста

Выполнение сборки Gradle должно подтвердить прохождение теста:

1
2
3
4
5
6
./gradlew build
 
pl.codeleak.demos.selenium.todomvc.SeleniumTest > projectIsConfigured() PASSED
 
BUILD SUCCESSFUL in 1s
3 actionable tasks: 2 executed, 1 up-to-date

Вы, вероятно, заметили, что во время выполнения задачи браузер Chrome был открыт, а затем закрыт. Это только подтверждает, что вся конфигурация драйвера была выполнена под капотом Selenium Jupiter (с использованием библиотеки WebDriverManager). Вы также заметили, что для этого теста нет кода настройки и очистки. Вместо этого мы внедряем экземпляр ChromeDriver непосредственно в тест, где он необходим. Вот как Selenium Jupiter использует механизм расширения JUnit 5 для ввода параметров для тестирования.

Создать Git-репозиторий

Начальная настройка проекта завершена. Перед началом реальной работы настройки проекта можно сохранить в репозитории Git. Если у вас установлен Git, выполните следующую команду, чтобы создать новый репозиторий:

1
git init

Отредактируйте файл .gitignore чтобы исключить файлы и каталоги, которые вы хотите пропустить из репозитория:

1
2
3
4
5
.gradle
.idea
*.iml
build
out

Выполните следующую команду, чтобы добавить и зафиксировать файлы в хранилище:

1
2
git add .
git commit -m 'Initial project setup'

Импорт проекта в IDE

Обратите внимание, что до сих пор вся работа была выполнена без IDE (не совсем верно — тест, который я создал с помощью IDE). В общем, это очень важный аспект конфигурации проекта: всегда делайте свой IDE проекта независимым. Докажите, что вы можете выполнить сборку с помощью одной команды оболочки. Это окупится, особенно если вы собираетесь выполнить сборку с использованием инструмента непрерывной интеграции.

В любом случае, с IntelliJ проект будет работать без проблем. Просто пообедайте, откройте каталог с проектом и импортируйте его как проект Gradle.

И теперь вы готовы приступить к разработке тестов и улучшению проекта. Но помните, что если вы вносите какие-либо изменения в конфигурацию, рекомендуется время от времени проверять их с помощью терминала за пределами IDE.

Следующие шаги

В следующей части этого руководства вы узнаете некоторые основы шаблонов объектов страниц и их реализации с использованием встроенного в PageFactory .

Смотрите оригинальную статью здесь: JUnit 5 и Selenium — Настройте проект с помощью Gradle, JUnit 5 и Jupiter Selenium

Мнения, высказанные участниками Java Code Geeks, являются их собственными.