/ / Cucumber-jvm: Konfigurowanie środowiska przed uruchomieniem jakichkolwiek funkcji - java, bdd, cucumber-jvm

Cucumber-jvm: Konfigurowanie środowiska przed wykonywaniem jakichkolwiek funkcji - java, bdd, cucumber-jvm

Chcę ustawić środowisko (np. local, dev, prod) raz i przed uruchomieniem którejkolwiek z funkcji. Jest to ustawienie podstawowego adresu URL i ładowanie konkretnego pliku danych testowych. Poniżej znajduje się przykładowa metoda, którą chcę wywołać raz i przede wszystkim w moich testach. Proszę zasugerować najlepszy sposób, aby to zrobić.

public void  baseSetUp(String environment){
loadTestData = loadPropertiesFile(enviroment);
setBaseUrl(enviroment);
restUtil = new RestUtil(pilotBaseUrl);
initialSetUp();
}

Jestem nowicjuszem w ogórku i java.

Odpowiedzi:

0 dla odpowiedzi № 1

Najprostszym sposobem jest użycie przechwytywania adnotacji @Before w klasie stepDef do konfigurowania danych przed uruchomieniem pliku funkcji.

import cucumber.annotation.After;
import cucumber.annotation.Before;

@Before
public void  baseSetUp(String environment){
loadTestData = loadPropertiesFile(enviroment);
setBaseUrl(enviroment);
restUtil = new RestUtil(pilotBaseUrl);
initialSetUp();
}
@Given("^I am doing step 1$")
public void ...... ...
....
..
.

Możesz zintegrować TestNG z Cucumber-JVM, jeśli chcesz wykonać więcej niestandardowych akcji przed i po kroku klasy / pakietu / funkcji.


0 dla odpowiedzi nr 2

Osiągnąłem to, używając ogórka z TestNG. W ten sposób mogłem używać adnotacji TestNG oraz haków ogórkowych. TestNG wykonuje pliki funkcji. Poniżej znajduje się klasa Runner:

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.
}
}