Cucumber-TestNG: ошибка «Тип gherkin.events.PickleEvent не может быть разрешен» при попытке использовать pickleEvent.getPickleEvent () - PullRequest
0 голосов
/ 19 июня 2020

Недавно я перешел от 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 остается нерешенным, поскольку он не находится под банкой с корнишоном.

...