我有步骤定义,比如说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,因此应该将构造函数注入ClassA作为参数传递给ClassB,但是将如何注入具有定义值的“环境”字段?
非常感谢您的提示
答案 0 :(得分: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类扩展了一些我们可以在其中获取Context()的类