Ich habe es mit Gurke mit TestNG erreicht. Auf diese Weise konnte ich sowohl Anmerkungen von TestNG als auch Gurkenhaken verwenden. TestNG führt Ihre Feature-Dateien aus. Unten ist die Runner-Klasse:
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import cucumber.api.testng.CucumberFeatureWrapper;
import cucumber.api.testng.TestNGCucumberRunner;
import org.junit.runner.RunWith;
import org.testng.annotations.*;
@RunWith(Cucumber.class)
@CucumberOptions(
monochrome = true,
features = "src/test/java/features",
glue = {"utils","steps"},
tags = {"@test"},
format = {
"pretty",
"html:target/cucumber-reports/cucumber-pretty",
"json:target/cucumber-reports/CucumberTestReport.json",
"rerun:target/cucumber-reports/rerun.txt"}
)
public class CucumberRunnerUtil {
private TestNGCucumberRunner testNGCucumberRunner;
@BeforeSuite
public void setUpEnvironment(){
// your setup code e.g. environment set up etc.
}
@BeforeClass(alwaysRun = true)
public void setUpClass() throws Exception {
testNGCucumberRunner = new
TestNGCucumberRunner(this.getClass());
}
@Test(groups = "cucumber", description = "Runs Cucumber Feature",dataProvider = "features")
public void feature(CucumberFeatureWrapper cucumberFeature) {
testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature());
}
@DataProvider
public Object[][] features() {
return testNGCucumberRunner.provideFeatures();
}
@AfterClass(alwaysRun = true)
public void tearDownClass() throws Exception {
testNGCucumberRunner.finish();
}
@AfterSuite
public void cleanUp(){
// code to clean resources.
}
}
Vielen Dank Manmohan für Ihren Vorschlag. Ich habe es versucht, aber es gibt einen Fehler, es heißt nur Argument Typ Szenario ist nicht erlaubt String. Hier ist der Fehler: gurke.runtime.CucumberException: Wenn ein Hook ein Argument deklariert, muss er vom Typ gucluc.api.Scenario sein. public void utils.CommonUtil.baseSetUp (java.lang.String) – learner
Sie müssen Ihrem Projekt ** cucumber-core ** lib hinzufügen. Überprüfen Sie auch Ihre IDE-Standardeinstellungen für Hauptklasse, wo es gurk.cli.Main sein könnte. Sie müssen dies zu gur- cur.api.cli.Main ändern –