Огурец BDD разделяют переменную между различными классами - PullRequest
0 голосов
/ 04 июля 2019

У меня есть определения шагов, скажем, ClassA и ClassB, когда в ClassB я хочу использовать переменную, определенную в ClassA.

Background:
Given Test environment is DEV
Then We get product info

ClassA()

Environment environment;//Enum like DEV("23.556.444.55", "44.555.666.77")

@Given("^Test environment is (.*)$")
public void setEnv(String name) {
//here i should define Env var (Enum)
environment = EnumClass.getEnvironment(name)

}

ClassB() {

@Then("^Then We get product info$")
public void getProdDetails() {
//Use here "environment" value defined in ClassA
}
}

Как я могу достичь этого, я считаю, что вводить любую статику нехороший подход.

Я понимаю, что ClassB должен иметь зависимость ClassA, так как инжектор конструктора Class A должен быть передан в ClassB как параметр, но как будет вставлено поле «environment» с определенным значением?

Большое спасибо за любые подсказки

1 Ответ

0 голосов
/ 11 июля 2019

Решено путем включения ThreadLocal (), например,

public class TestExecutionContextHolder {

private TestExecutionContextHolder contextLocal = new ThreadLocal<TestExecutionContext>();

public TestExecutionContext getContext() {
      TestExecutionContext context = contextLocal.get();

     // checking if context is null then new TestExecutionContext(), contextLocal.set(context)

} 
      //add void releaseContext()
}

Тогда класс Step Def расширяет некоторый класс, где мы получаем getContext ()

...