为Cucumber Java中的场景大纲示例运行一次背景

时间:2018-01-25 17:29:54

标签: java cucumber

我想为下面的场景运行一次后台,这样在执行时,它不应该再次返回用户登录屏幕。

我发现了一些回复,其中说这是黄瓜的工作方式,但找不到任何替代方法。

处理此问题的最佳方法是什么?如果有人可以为此分享示例代码。

e.g。

Background:
    Given User logs into the application and on the home page

Scenario outline:
    When user fills the form "<FName>" and "<LName>"
    And click on submit button
    Then Result should display

    Examples:
    |FName|LName    | 
    |Abc | XYZ      |
    |Tom | Anderson |

2 个答案:

答案 0 :(得分:2)

处理此问题的最佳方法是不要这样做。 Cucumber就是这样设计的原因。如果你采用这种方法,特别是如果你广泛使用它,你将最终得到一些功能,这些功能经常以非常奇怪的方式打破,因为在以前的场景中发生了什么。例如,在您当前的示例中,如果填写表单并没有将您带回到可以填写表单的位置,则第二个示例将因为您不在正确的位置而失败。

答案 1 :(得分:1)

您需要在包含匹配的后台步骤定义的类中设置静态标志。最初将其设置为false(如果您愿意,则为true)。在步骤定义中创建if条件以检查标志的值。将其设置为相反的值,并将所需的操作放在if条件中。这应该只在第一次执行。

private static boolean flag = false;

@Given("^User Logs In$")
public void userLogsIn() {
    if(flag==false) {
        flag=true;
        //Place the code you want to run only for first time
    }
}