我如何定义"我想要"使用 java ?
从我的功能中执行步骤我的黄瓜项目设置如下:
Sep 2 20:48:01 name mysqld[12007]: 2016-09-03T03:48:01.270840Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
Sep 2 20:48:01 name mysqld[12007]: 2016-09-03T03:48:01.270934Z 0 [Note] IPv6 is available.
Sep 2 20:48:01 name mysqld[12007]: 2016-09-03T03:48:01.270951Z 0 [Note] - '::' resolves to '::';
Sep 2 20:48:01 name mysqld[12007]: 2016-09-03T03:48:01.271052Z 0 [Note] Server socket created on IP: '::'.
然后我的步骤定义如下:
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"
这是我的尝试,但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
}
}
不是有效的注释。
@When
答案 0 :(得分:2)
"我想测试......."是不正确的位置被认为是有效的步骤。 Cucumber认为它是对该功能的描述,并且不做任何事情。如果您想要跨场景的初步常见步骤,您应该添加一个'背景'。
只需添加" @ Given"在该步骤前面注释。
Background:
@Given I want to test on "www.google.com"
另外只运行一个场景,并将其与其他步骤一起使用。
答案 1 :(得分:1)
你也可以这样做:
public class ClearPassword : IPasswordHasher
{
public string HashPassword(string password)
{
return password;
}
}
答案 2 :(得分:1)
“我想要”不是场景中的一个步骤,它是场景或故事的叙事概述的一部分。
<强>叙事强>: 在我(角色) 我想要(功能) 实现(利益)
该功能应包括许多由步骤组成的场景。
我建议你看一下BDD中的“势在必行与声明的BDD”和“无所不在的语言”。一般来说,在编写BDD时,你应该瞄准无处不在(通用而非技术)和声明性语言。
select f.flat_id, f.flat_no, uf.name from flat f left join
usertoflat uf on f.flat_id = uf.flat_id and uf.status = 1
以无处不在的语言
Dictionary<string, string> dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
var myImageObject = new { Id = "", Images = new Dictionary<int, string>()};
foreach(var key in dict.Keys) {
if(key == "id") {
myImageObject.Id = dict[key]
}
else {
var imageSize = ParseForImageSize(key);
myImageObject.Images.Add(imageSize, dict[key])
}
}
更好的普及第三人称语言
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.
答案 3 :(得分:1)
功能文件:
背景:
@Given I want to test on "www.google.com"
Step Def类:
@Given("I want to test on (.*)")
public void I_want_to_test_on(String arg1)
{
//Here you can write your code..driver.get(arg1);
}