如何在黄瓜jvm场景之间传递变量和值
我有两个场景A和B.我在一个变量中存储’A’场景的字段输出的值。 现在我必须在场景’B’中使用该变量。 如何在Cucumber Java中将变量及其值从一个场景传递给另一个场景
目前还不完全清楚这些场景的步骤定义是否在单独的类中,但我认为它们是并且ScenarioA中的步骤在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所提到的,最好的方法是使用dependency injection。 要使用手动dependency injection提供一个简单的解决方案,您可以执行类似的操作
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的dependency injectionfunction。