Создание раннеров для тестов
Следующий шаг – это создание раннеров для наших автотестов. Будем использовать JUnit.
1 2 3 4 5 6 7 8 9 |
package cucumber.jvm.parallel.cucumber; import cucumber.api.junit.Cucumber; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @Cucumber.Options(features = "target/test-classes/cucumber/examples/", tags = {"@search"}, format = {"html:target/cucumber-report/search"}) public class SearchAT { } |
В приведенном выше коде в файле “SearchAT.class” Вы можете увидить указание файла feature. Также определяется тег (@search), который относится к выше указанному тегу в cucumber feature файле и указывается путь к html репорту.
Другими словами эти нотификации задают команду “запустить все тесты с тегом @search и написать результат в папку /search”.
Также мы имеем другой класс – “AutoCorrectAT”, который делает то же самое для всех тестов с тегом “@autocorrect”. Оба этих классов можно найти здесь “/src/test/java/cucumber.jvm.parallel/cucumber”.
Чтобы добавить другой поток нужно просто нужно добавить другой класс раннера с другим тегом.
Пареллельный запуск тестов
Для параллельного запуска Cucumber-JVM тестов используя WebDriver для взаимодействия с браузером нужно перейти в Maven POM файл и посмотреть настройки:
Можно увидить, что maven-surefire-plugin используется для запуска наших приемочных тестов – любой класс, оканчивающийся на *AT будет запущен как тестовый класс JUnit. В его настройках задается переменная forkCount, установленное значение которой – 5. Это означает, что мы можем щапустить до 5 потоков ( 5 запущенных классовclasses) в одно время.
Отчетность
Результатом запуска двух файлов feature будут отчеты, которые расположены в двух отдельных директориях. Для упрощения отчетности, нашим финальным шагом будет совмещение этих двух репортов в один.Для этого у нас есть код “/src/main/java/cucumber.jvm.parallel/ReportMerger”. Он выполняется с помощью exec-maven-plugin в Maven POM файле.
Результатом его работы есть файл index.html в корневом каталоге, который состоит с отдельных подрепортов.