当前位置: 首页 > 知识库问答 >
问题:

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

东方森
2023-03-14

在一个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

那么,cucumber中是否有任何我们可以设置cucumber以在步骤执行完成后清除所有对象?

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

共有1个答案

葛烨
2023-03-14

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

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);
    }
}
 类似资料:
  • 我对BDD是新手,尤其是cucumber。 我能从一个变量中得到一个特征及其步骤吗?另外,我希望在运行测试之前,通过这个测试的特殊选择,从测试跟踪器(TestRail)获得一个特性及其步骤,并将其放在列表中,然后一个接一个地获得一个场景并运行它。 有这种可能吗?我应该为此使用Cucumber还是其他框架?

  • 我有一个变量,我想在所有步骤中传递这个变量。任何人都可以通过代码片段示例建议如何在步骤之间传递变量值。任何帮助将不胜感激。

  • 我正在用cucumber和ruby实现自动化。我的情况如下。 为了实现,我在第二步中进行了迭代以单击所有链接。 为此,我每次都必须回到主页,然后进行验证。我是否必须每次重复第二步实现,或者我可以跳过第三步并在第二步中实现所有内容?

  • 我设置了以下测试用例: 我想使用Groovy脚本测试步骤获得SoapRequest测试步骤的状态。 它可以如下所示完成: 但是我不想通过脚本运行TestStep,而只是使用soapui testrunner。在datasink测试步骤中,我可以使用这个: 不幸的是,上述方法在GroovyScript TestStep中不起作用 有什么想法吗?

  • 我是批处理领域的新手,我正在尝试使用Spring batch解决下面提到的问题。我真的很难从中创建多步骤批处理作业。 给予 包含多个学生记录的csv文件 我们有一个RESTendpoint,该endpoint记录学生在所有科目中的分数,并为每个学生返回结果(通过/失败)。通过/失败逻辑在给定的restendpoint中定义。 待办事项 从csv中读取一批记录,每批进行一次REST调用,根据每个学生