我有一个变量,我想在所有步骤中传递该变量。
任何人都可以使用代码片段示例来建议如何在步骤之间传递变量值。
任何帮助将不胜感激。
在 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 的创建目的是each场景并传递给every需要它的步骤定义类。这种方法的好处是 Cucumber 确保场景之间不会发生共享状态泄漏,因为注入的依赖项是为每个场景重新创建的。
上面的示例使用构造函数注入(因此注入的依赖项由构造函数参数指定),但其他 DI 容器也支持其他注入机制,例如 Spring 的@Autowired
.
要让 Cucumber 使用 DI,您需要选择一个(且只有一个)DI 集成,并将其包含在您的类路径中(或 POM 中)。选择是:
- PicoContainer(黄瓜-picocontainer.jar)
- Guice(黄瓜-guice.jar)
- 焊接(黄瓜焊接.jar)
- 春天(黄瓜-spring.jar)
- OpenEJB(黄瓜-openejb.jar)
您还需要安装所选的 DI 容器本身,因为 Cucumber jar 只提供 Cucumber 和 DI 容器之间的集成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)