在执行故事时,您可以使用一个上下文来放置多个 StepClasses 所需的对象/值。这可以使用ThreadLocal来实现。使用这样的上下文,您可以简单地将您在第二步中获得的值放入上下文中,并在需要进行比较的第五步中再次获取它。可以很容易地找到如何使用 ThreadLocal 的示例——例如这里。
也许最简单的例子如下(有关更多信息,请参见上面的链接页面)。
故事:
Scenario: store and load a value
When I store the value asdf
Then the value is asdf
类上下文:
public class Context {
private String data;
// getData(), setData(), ...
}
MyThreadLocal 类:
public class MyThreadLocal {
static final class ContextLocal extends ThreadLocal<Context> {
@Override
protected Context initialValue() {
return new Context();
}
}
private static final ThreadLocal<Context> userThreadLocal = new ContextLocal();
public static Context get() {
return userThreadLocal.get();
}
}
和步骤类:
public class SomeSteps extends Steps {
@When("I store the value $value")
public void storeValue(String value) {
MyThreadLocal.get().setData(value);
}
}
public class SomeOtherSteps extends Steps {
@Then("the value is $value")
public void checkValue(String value) {
assertEquals(value, MyThreadLocal.get().getData());
}
}
在 Context 类中,您可以使用更精细的方式来存储数据,例如 Map。