【发布时间】:2020-03-18 03:13:11
【问题描述】:
我有两个场景 A 和 B。我将“A”场景的字段输出值存储在一个变量中。现在我必须在场景“B”中使用该变量。如何在 Cucumber Java 中将变量及其值从一个场景传递到另一个场景
【问题讨论】:
标签: java selenium cucumber-jvm
我有两个场景 A 和 B。我将“A”场景的字段输出值存储在一个变量中。现在我必须在场景“B”中使用该变量。如何在 Cucumber Java 中将变量及其值从一个场景传递到另一个场景
【问题讨论】:
标签: java selenium cucumber-jvm
尚不完全清楚这些场景的步骤定义是否在单独的类中,但我假设它们是,并且场景 A 中的步骤在 B 中的步骤之前执行。
public class ScenarioA {
public static String getVariableYouWantToUse() {
return variableYouWantToUse;
}
private static String variableYouWantToUse;
Given("your step that expects one parameter")
public void some_step(String myVariable)
variableYouWantToUse = myVariable;
}
然后在场景 B 中。
public class ScenarioB {
Given("other step")
public void some_other_step()
ScenarioA.getVariableYouWantToUse();
}
【讨论】:
正如@Mykola 所提到的,最好的方法是使用依赖注入。要使用手动依赖注入提供一个简单的解决方案,您可以执行类似
的操作public class OneStepDefinition{
private String user;
// and some setter which could be your step definition methods
public String getUser() {
return user;
}
}
public class AnotherStepDefinition {
private final OneStepDefinition oneStepDefinition;
public AnotherStepDefinition(OneStepDefinition oneStepDefinition) {
this.oneStepDefinition = oneStepDefinition;
}
// Some step defs
@Given("^I do something on the user created in OneStepDefinition class$")
public void doSomething() {
String user = oneStepDefinition.getUser();
// do something with the user
}
}
【讨论】:
只是为了记录,可以使用 cucumber-jvm 的依赖注入功能,而不是依赖静态状态。
【讨论】:
带静态变量
public class CcumberCintext {
public static String value;
}
【讨论】: