在Cucumber for
Java(cucumber-jvm)中,在步骤之间共享数据的预期方式是使用依赖性集成(DI)容器 – 其中一些已与Cucumber集成.
使用DI的方法在容器之间略有不同,但这是使用PicoContainer的示例:
// MySharedData.java
public class MySharedData {
public String stringData;
}
// SomeStepDefs.java
public class SomeStepDefs {
private MySharedData sharedData;
public SomeStepDefs(MySharedData sharedData) {
this.sharedData = sharedData;
}
// StepDefs omitted
}
// MoreStepDefs.java
public class MoreStepDefs {
private MySharedData sharedData;
public MoreStepDefs(MySharedData sharedData) {
this.sharedData = sharedData;
}
// StepDefs omitted
}
DI容器将确保为每个场景创建单个MySharedData实例,并将其传递给需要它的每个步骤定义类.这种方法的好处是Cucumber确保场景之间没有共享状态泄漏,因为为每个场景重新创建注入的依赖项.
上面的示例使用构造函数注入(因此注入的依赖项由构造函数参数