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

时间:2018-12-13 11:05:24

标签: java cucumber

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

@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

那么,在黄瓜中,有没有什么可以设置黄瓜以在完成步骤执行后清除所有对象的呢?

请不要要求将x设置为静态,它将解决此问题,但是除了将x设置为静态之外,我们还需要其他解决方案

1 个答案:

答案 0 :(得分:0)

当您使用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);
    }
}