1.概述

在这个简短的教程中,我们将学习金宝搏官网188be黄瓜背景是一个允许我们为黄瓜特征的每个测试执行一些句子的功能。

2.黄瓜背景

首先,让我们解释一下黄瓜背景是。其目的是在每个特征的每个测试之前执行一个或多个句子。

但我们试图在这里解决什么问题?

假设我们有一本关于黄瓜测试的书店应用程序。首先,让我们创建该应用程序,这将只是一个Java类:

公共类书店{私人列表 Books = new arraylist <>();公共无效地址簿(书籍书){Books.add(书籍);公共列表 booksbyauthor(String books.stream().filter(book  - > Objects.equals(authory,book.getauthor())).collect(collectors.tolist());公共可选 bookbytitle(String title){return books.stream().filter(book  - > book.gettitle()。等于(标题)).findfirst();}}

正如我们所看到的,就可以添加和搜索商店的书籍。现在,让我们创建一些黄瓜句来与书店互动:

公共类Bookstorunsteps {私人书店商店;私人列表 POSINGBOOKS;私人书专员;@Before public void setup(){store = new bookstore();专区= new arraylist <>();@given(“^我在商店里有以下书籍$”)公共void havebooksinthestore(DataTable表){list > Rows = table.aslists(string.class);for(列表列:行){store.addbook(新书(columns.get(0),columns.get(1)));@When(“^我搜索作者(。+)$”)公共void searchforboobsbyauthor(String作者){footbooks = store.booksbyauthor(作者);} @when(“^我搜索标题的书籍(。+)$”)公共空白搜索forbookbytitle(String title){fockbook = store.bookbytitle(title).orelse(null);@then(“^我找到(\\ d +)书籍$”)公共void findbook(int count){assertequals(count,poodbooks.size()); } @Then("^I find a book$") public void findABook() { assertNotNull(foundBook); } @Then("^I find no book$") public void findNoBook() { assertNull(foundBook); } }

通过这些句子,我们可以添加书籍,通过作者或标题搜索它们,并检查我们是否找到它们。

现在,一切都设置为我们创建我们的功能。我们将通过他们的作者搜索书籍,但也由他们的标题:

特点:没有背景场景的书店:通过作者查找书籍,我在商店里有以下书籍|白城的魔鬼|Erik Larson ||狮子,巫婆和衣柜|C.S. Lewis ||在野兽的花园里|Erik Larson |当我搜索作者Erik Larson的书籍然后我找到2本书的场景:通过作者查找书籍,但没有给出我在商店里有以下书籍| The Devil in the White City | Erik Larson | | The Lion, the Witch and the Wardrobe | C.S. Lewis | | In the Garden of Beasts | Erik Larson | When I search for books by author Marcel Proust Then I find 0 books Scenario: Find book by title Given I have the following books in the store | The Devil in the White City | Erik Larson | | The Lion, the Witch and the Wardrobe | C.S. Lewis | | In the Garden of Beasts | Erik Larson | When I search for a book titled The Lion, the Witch and the Wardrobe Then I find a book Scenario: Find book by title, but isn't there Given I have the following books in the store | The Devil in the White City | Erik Larson | | The Lion, the Witch and the Wardrobe | C.S. Lewis | | In the Garden of Beasts | Erik Larson | When I search for a book titled Swann's Way Then I find no book

此功能适用,但它往往有点冗长,因为我们为每个测试初始化​​商店。这不仅会创建大量的行,还是如果我们必须更新商店,我们必须为每个测试进行。那是黄瓜背景派上的时候。

例子

那么,如何创建背景为此功能创建商店?为此,我们必须使用关键字背景,给它一个标题,就像我们为a做的设想,并定义要执行的句子:

背景:书店给出了我的商店里有以下书籍|白城的魔鬼|Erik Larson ||狮子,巫婆和衣柜|C.S. Lewis ||在野兽的花园里|Erik Larson |

当我们这样做时,我们可以在测试中摆脱这句话,让他们专注于他们的特殊性:

场景:当我搜索作者Erik Larson的书籍时,找到2本书场景:通过作者查找书籍,但是当我搜索作者Marcel Proust的书籍时,我找到0本书场景:查找0本书按标题搜索标题狮子,女巫和衣柜的书,然后我找到了一本书的场景:通过标题查找预订,但是当我搜索符合Swann的方式的书时,我没有找到没有书

我们可以看到,场景较短比以前和剩下的句子侧重于我们尝试测试的东西而不是设置数据。

4.差异@前

现在,让我们讨论黄瓜背景之间的区别@前。钩子还允许我们在场景之前执行代码,但是此代码隐藏在仅读取功能文件的那些代码中。另一方面,背景由特征文件中可见的句子组成。

结论

在这篇简短的文章中,我们学会了如何使用黄瓜背景功能。它允许我们在特征的每种场景之前执行一些句子。我们还讨论了此功能与此功能之间的差异@前钩。

像往常一样,可以找到本文的代码在github上

通用底部

使用Spring 5和Spring Boot 2开始,通过学习春天课程:

>>查看课程
评论在本文上关闭!