如何在黄瓜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。