2

如何使用java从我的功能中定义“我想要”步骤

我的黄瓜项目设置如下:

登录功能

Feature: User Login
    I want to test on "www.google.com"

Scenario: Successfully log in 
    Given I am logged out
    When I send a GET request to "/login"
    Then the response status should be "200"

然后我的步骤定义如下:

步骤.java

import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
import cucumber.api.java.en.Then;

public class Steps {
    @Given("^I am logged out$")
    public void i_am_logged_out() {
        //do stuff
    }

    @When("^I send a GET request to \"([^\"]*)\"$")
    public void i_send_a_GET_request_to(String arg1) {
        //do stuff
    }

    @Then("^the response status should be \"([^\"]*)\"$")
    public void the_response_status_should_be(String arg1) {
        //do stuff
    }
}

如何使用 cucumber-jvm 在 Java 中定义“我想要”步骤?

这是我的尝试,但@When不是有效的注释。

@Want("to test on \"([^\"]*)\"$")
public void to_test_on(String arg1) {
    //do stuff
}
4

4 回答 4

2

“我想测试.......”不在正确的位置被视为有效步骤。Cucumber 认为它是对该功能的描述,并且对它没有任何作用。如果您想要跨场景的初始通用步骤,您应该添加一个“背景”。

只需在该步骤前面添加一个“@Given”注释即可。

Background:
    @Given I want to test on "www.google.com"

否则,仅针对一种情况运行将其与其他步骤一起使用。

于 2016-09-02T04:39:20.447 回答
1

“我想要”不是场景中的一个步骤,它是场景或故事的叙述概述的一部分。

叙述:在我的(角色)中我要(特征)实现(利益)

该功能应包括许多由步骤组成的场景。

我建议您看一下 BDD 中的“命令式与声明式 BDD”和“无处不在的语言”。一般来说,在编写 BDD 时,您应该瞄准无处不在(通用而不是技术)和声明性语言。

Given I am logged out - Declarative style in ubiquitous language
When I send a GET request to "/login" - Imperative and geek domain language.
Then the response status should be "200" - Imperative and geek domain language.

用无处不在的语言

Given I am logged out
When I log in
Then the response is logged in

更好的通用第三人称语言

Given an existing customer
When the customer authenticates 
Then the search page is shown

另见: http: //grammarist.com/spelling/log-in-login/

于 2016-09-05T07:23:43.257 回答
1

你也可以这样做:

Feature: User login

Scenario: Successfully log in

Given I want to test on "www.google.com"
When I am logged out
Then I send a GET request to "/login"
And the response status should be "200"
于 2016-09-02T09:59:58.103 回答
1

功能文件:

背景:

@Given I want to test on "www.google.com"

步骤定义类:

@Given("I want to test on (.*)")

public void I_want_to_test_on(String arg1)

{

  //Here you can write your code..driver.get(arg1);

}
于 2020-02-13T11:46:36.650 回答