Недавно я перешел от info-cukes к io-cucumber и пытался запустить каждый сценарий как отдельный тест. Я пробовал использовать testNGCucumberRunner.runScenario (pickleEvent.getPickleEvent ()). Но pickleEvent.getPickleEvent () подсвечивается с ошибкой «Тип gherkin.events.PickleEvent не может быть разрешен. На него косвенно ссылаются из необходимого файла .class»
Ниже показаны зависимости, которые я добавил:
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java8</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>4.8.1</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm-deps</artifactId>
<version>1.0.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>gherkin</artifactId>
<version>13.0.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-gherkin</artifactId>
<version>5.0.0</version>
</dependency>
Ниже показан мой класс TestRunner:
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberFeatureWrapper;
import io.cucumber.testng.CucumberOptions;
import io.cucumber.testng.TestNGCucumberRunner;
import io.cucumber.testng.PickleEventWrapper;
//import gherkin.events.PickleEvent;
import io.cucumber.gherkin.pickles.PickleCompiler;
@CucumberOptions(
features="<Features_Package_path>"
,glue= {"com.crm.bdd.stepdefinitions"}
,monochrome = true
,dryRun = false
,strict = true
,tags = {"@RegressionTest", "~@Ignore"} ,plugin = "json:target/cucumber-reports/CucumberTestReport.json"
)
public class RegressionTestRunner {
private TestNGCucumberRunner testNGCucumberRunner;
@BeforeClass(alwaysRun = true)
public void setUpClasss() throws Exception {
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
}
@Test(groups = "cucumber", description = "Runs cucumber Scenarios", dataProvider = "scenarios")
public void scenario(PickleEventWrapper pickleEvent, CucumberFeatureWrapper cucumberFeature) throws Throwable {
testNGCucumberRunner.runScenario(pickleEvent.getPickleEvent());
}
@DataProvider
public Object[][] scenarios() {
return testNGCucumberRunner.provideScenarios();
}
@AfterClass(alwaysRun = true)
public void tearDownClass() {
testNGCucumberRunner.finish();
}
}
ПРИМЕЧАНИЕ. Я играл с несколькими версиями огурца-корнишона, корнишона и всеми другими зависимостями. Я считаю, что банка с корнишоном должна содержать пакет gherkin.events. Но я не нашел его ни в одной из версий, которые пробовал. Когда я выполняю «import gherkin.events.PickleEvent;», ошибка исчезает. Но импортированный gherkin.events.PickleEvent остается нерешенным, поскольку он не находится под банкой с корнишоном.