0

我有步骤定义,比如说 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 但是如何注入具有定义值的“环境”字段?

非常感谢任何提示

4

1 回答 1

0

通过合并 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() 的类

于 2019-07-11T08:51:03.327 回答