在一个黄瓜步骤实现中具有某些值的变量集在下一步中将丢失其值
@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设置为静态之外,我们还需要其他解决方案
答案 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);
}
}