Ключевой момент: Прежде чем мы начнем, мы хотели бы поделиться примечанием для лучшего понимания в будущем, мы не будем смешивать прямые и переходные зависимости, особенно их версии!Это может привести к непредсказуемому исходу.Хорошо, давайте разберемся шаг за шагом.
Первый - Обновите POM.xml, указав правильный набор зависимостей io.cucumber.Мы рассматриваем v4.2.6 для этой реализации
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.2.6</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>4.2.6</version>
</dependency>
Указать на заметку - Может быть проблема, когда все в порядке, но тесты по-прежнему не выполняются параллельно, и это может произойти, есливаш pom.xml имеет прямую / транзитивную зависимость testng.Поскольку testNG заставляет Surefire игнорировать класс-оболочку JUnit.Если у вас была зависимость testng, удалите зависимость TestNG, или вы можете взять вызов 2, определите 2 выполнения - для TestNG и JUnit и отключите один в соответствии с вашими потребностями.
Второй - Настройка Runnerкласс в соответствии с вашей структурой необходимо
package com.jacksparrow.automation.suite.runner;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:features/functional/",
glue = {"com.jacksparrow.automation.steps_definitions.functional" },
plugin = { "pretty","json:target/cucumber-json/cucumber.json",
"junit:target/cucumber-reports/Cucumber.xml", "html:target/cucumber-reports"},
tags = { "@BAMS_Submitted_State_Guest_User" },
junit ={ "--step-notifications"},
strict = false,
dryRun = false,
monochrome = true)
public class RunCukeTest {
}
Третий - Реализация плагина maven surefire, который будет фактически запускать тесты параллельно
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<parallel>methods</parallel>
<threadCount>2</threadCount>
<reuserForks>false</reuserForks>
<testFailureIgnore>true</testFailureIgnore>
<includes>
<include>**/*RunCukeTest.java</include>
</includes>
</configuration>
</plugin>
Четвертый - Реализация Hooks.java
import cucumber.api.Scenario;
import cucumber.api.java.Before;
import cucumber.api.java.After;
public class Hooks {
@Before
public void setUpScenario(String browser){
//BaseSteps.getInstance().getBrowserInstantiation(browser); your browser setup method
}
@After
public void afterScenario(Scenario scenario){
// more code goes here
}
}