我有一个变量,我想在所有步骤中传递此变量。
任何人都可以通过代码段示例来建议如何在步骤之间传递变量值。
任何帮助将不胜感激。
最佳答案
在Java版Cucumber(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确保方案之间不会共享状态泄漏,因为为每个方案都重新创建了注入(inject)的依赖关系。
上面的示例使用构造函数注入(inject)(因此,注入(inject)的依赖关系由构造函数参数指定),但是其他DI容器也支持其他注入(inject)机制,例如Spring的
@Autowired
。要使Cucumber使用DI,您需要选择一种(也只有一种)DI集成,并将其包括在类路径中(或POM中)。选择范围为:
您还需要安装所选的DI容器本身,因为Cucumber jar 仅提供Cucumber与DI容器之间的集成。