/ / Cucumber-jvm: Налаштування середовища перед виконанням будь-яких функцій - java, bdd, cucumber-jvm

Cucumber-jvm: Налаштування середовища перед виконанням будь-яких функцій - java, bdd, cucumber-jvm

Я хочу встановити середовище (наприклад, local, dev, prod) один раз і перед запуском будь-якої функції. Потрібно встановити базовий URL-адресу та завантажити конкретний файл даних тесту. Нижче наводиться зразок методу, до якого я хочу звернутися один раз і перше, що потрібно на моїх тестах. Підкажіть, будь ласка, найкращий спосіб зробити це.

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

Я новачок в огірках і Java.

Відповіді:

0 для відповіді № 1

Найпростіший спосіб - використовувати гачки анотацій @Before в класі stepDef для налаштування даних перед запуском файла функції.

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

Ви можете інтегрувати TestNG з Cucumber-JVM, якщо ви хочете зробити більше спеціальних дій до і після класу / набору / функції кроку.


0 для відповіді № 2

Я досяг цього, використовуючи огірок з TestNG. Таким чином мені вдалося використовувати анотації TestNG, а також гачки огірків. TestNG виконує ваші файли функцій. Нижче представлений клас 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.
}
}