黄瓜简介
#bdd #java #cucumber #teste

Cucumber是一种软件测试工具,可让您编写自然语言测试风景,然后检查系统是否按照这些风景进行表现。这些风景以称为小黄瓜的格式编写,这是一种描述测试风景的特定语言。黄瓜被广泛用于接受测试项目,因为它允许开发人员,项目经理和其他利益相关者无需知识就可以写出清晰而简洁的测试风景。

指定测试风景时没有使用的指定音符: 给定 然后 。这些注释允许编译器知道执行中应该做什么。为了说明黄瓜的工作原理,让我们考虑一个书籍管理系统的示例。这种风景的小黄瓜可以写如下:

Scenario: Request a book by id
    Given set book id for search 1
    When find a book by id
    Then the request status for a book id mut return 200 HTTP status
    And the request must return a valid book
    And for book 1 title must be "Amsterdam" and author "Ian McEwan"

这种风景描述了研究书籍时系统的预期行为。黄瓜擦除此风景,然后调用代码以检查系统是否按照它的行为。如果系统不按照风景行为,则黄瓜将出现错误。

要实施此测试场景,有必要写信,我可以看到研究的书是否真的按预期返回。 Java中Java的一个例子是:

@Given("set book id for search {long}")
public void setBookIdForSearch(Long id) {
    this.bookId = id;
}

@When("find a book by id")
public void findABookById() {
    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<Book> forEntity = restTemplate.getForEntity(format(ENDPOINT, 1L), Book.class);
    bookResponse = forEntity.getBody();
    httpStatusResponse = forEntity.getStatusCode();
}

@Then("the request status for a book id mut return {int} HTTP status")
public void theRequestStatusForABookIdMutReturnHTTPStatus(int statusCode) {
    assertThat(httpStatusResponse.value(), equalTo(statusCode));
}

@And("the request must return a valid book")
public void theRequestMustReturnAValidBook() {
    assertNotNull(bookResponse);
    assertNotNull(bookResponse.getId());
    assertNotNull(bookResponse.getTitle());
    assertNotNull(bookResponse.getAuthor());
}

@And("for book {long} title must be {string} and author {string}")
public void forBookTitleMustBeAndAuthor(Long id, String title, String author) {
    assertThat(bookResponse.getId(), equalTo(id));
    assertThat(bookResponse.getTitle(), equalTo(title));
    assertThat(bookResponse.getAuthor(), equalTo(author));
}

这样,在小黄瓜中实现了测试场景的每个步骤。

黄瓜的主要好处之一是,它允许利益相关者在没有知识的情况下写测试风景,这有助于团队成员之间的沟通和协作。此外,黄瓜与各种编程语言都广泛兼容,这意味着它几乎可以在任何软件项目中使用。

黄瓜的另一个有益的是它允许重复使用测试场景。这意味着,一旦编写和实施了测试场景,就可以在不同的项目甚至将来的项目中轻松地重复使用。这可以节省大量的时间和精力。

pâginaDocumenta㧣o do cucumber:https://cucumber.io/

cã³digofonte:https://github.com/rodolfomarriel/cucumberexample