在一个黄瓜步骤实施中具有某些值的变量集在下一步中将失去其价值

Variable set with some value in the one cucumber step implementation is losing its value in the next step

在一个黄瓜步骤实现中具有某些值的变量集在下一步中将失去其值

@Test
Feature: Test

@test
  Scenario: Test

   When user sets value of varibale x
    Then user retrives value of x

步骤实施

import cucumber.api.java.en.When;

public class TestStepToBeRemoved {
    String x;

    @When("^user sets value of varibale x$")
    public void setValueOfx() {
        x = "Random Text";
    }

    @When("^user retrives value of x$")
    public void retriveValueOfX() {
        System.out.println("Value of X is : " + x);
    }
}

在我们将另一个使用 Guice 库和注入器的框架合并到我们的项目之前,这工作正常。但是现在输出

Value of X is : null

那么,cucumber中有没有可以让cucumber在step执行完成后清除所有object的?

请不要要求将 x 设为静态,它会解决此问题,但我们需要任何其他解决方案,除了将 x 设为静态

当您使用 cucumber-guice lib 时,cucumber 以某种方式为不同的步骤定义创建不同的对象引用,因此在一个步骤中初始化的实例变量无法在下一步中保持相同的值。 为避免这种情况,您可以在步骤定义文件的顶部使用@ScenarioScoped,它将解决问题

import cucumber.api.java.en.When;

@ScenarioScoped
public class TestStepToBeRemoved {
    String x;

    @When("^user sets value of varibale x$")
    public void setValueOfx() {
        x = "Random Text";
    }

    @When("^user retrives value of x$")
    public void retriveValueOfX() {
        System.out.println("Value of X is : " + x);
    }
}