Java 如何传递变量&;jvm场景之间的值

Java 如何传递变量&;jvm场景之间的值,java,selenium,cucumber-jvm,Java,Selenium,Cucumber Jvm,我有两个场景A和B。我将“A”场景的字段输出值存储在变量中。现在我必须在场景“B”中使用该变量。在Cucumber Java中,如何将变量及其值从一个场景传递到另一个场景不完全清楚这些场景的步骤定义是否在单独的类中,但我假设它们是,并且ScenarioA中的步骤是在B中的步骤之前执行的 public class ScenarioA { public static String getVariableYouWantToUse() { return variableYouWantToU

我有两个场景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();
}

目前还不完全清楚这些场景的步骤定义是否在不同的类中,但我假设它们是独立的,并且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();
}

只是为了记录,可以使用jvm的依赖注入特性,而不是依赖于静态

为了记录,可以使用jvm的依赖注入特性,而不是依赖静态

正如@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
    }
}

正如@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
    }
}
使用静态变量

public class CcumberCintext {
   public static String value;
}
使用静态变量

public class CcumberCintext {
   public static String value;
}

问题是关于场景而不是步骤,DI不适用于场景。问题是关于场景而不是步骤,DI不适用于场景。链接已断开!链接死了,吉姆!