Сначала Убедитесь, что вы используете cucumber.api.java.Before (интерфейс), а не org.junit.Before , поскольку Cucumber не будет обрабатывать JUnit аннотаций.
- @ До - импорт cucumber.api.java.Before;
- @ После - импорт cucumber.api.java.After;
Надеюсь, мы находимся здесь на одной странице, и давайте двигаться дальше, не задерживаясь.
Второй позволяет понять, если ваши МЕТОДЫ ОСУЩЕСТВЛЕНИЯ ШАГОВ и HOOK CLASS находятся в одном пакете, тогда нам не нужно дополнительно указывать путь к классу Hooks в опции клея runner. В моем случае оба пакета находятся в одном пакете, поэтому нам нужно установить только один пакет.
Но если они находятся в разных пакетах, пожалуйста, включите пакет класса Hooks в опцию glue файла 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" },
strict = false,
dryRun = false,
monochrome = true)
public class RunCukeTest {
}
Ключевой момент: Мы не будем смешивать прямые и переходные зависимости, особенно их версии! Это может привести к непредсказуемому исходу. Вы можете добавить ниже набор минимальных зависимостей огурца.
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>4.3.0</version>
<scope>test</scope>
</dependency>