Uborka háttér

1. Áttekintés

Ebben a rövid bemutatóban megismerjük az uborka hátterét, amely egy olyan funkció, amely lehetővé teszi számunkra, hogy néhány mondatot végrehajtsunk egy uborka tulajdonság minden tesztjéhez.

2. Uborka háttér

Először magyarázzuk el, mi az uborka háttér. Célja egy vagy több mondat végrehajtása a jellemző minden tesztje előtt.

De milyen problémát próbálunk itt megoldani?

Tegyük fel, hogy van egy könyvesbolt-alkalmazásunk, amelyet tesztelni szeretnénk az uborkával. Először hozzuk létre azt az alkalmazást, amely egyszerűen Java osztály lesz:

public class BookStore {private List books = new ArrayList (); public void addBook (Könyvkönyv) {books.add (könyv); } public Könyvek listájaByAuthor (karakterlánc-készítő) {return books.stream () .filter (könyv -> Objects.equals (szerző, book.getAuthor ())) .collect (Collectors.toList ()); } public Opcionális bookByTitle (String title) {return books.stream () .filter (book -> book.getTitle (). egyenlő (cím)) .findFirst (); }}

Mint láthatjuk, lehetőség van könyvek hozzáadására és keresésére az üzletben. Hozzunk létre néhány uborka-mondatot a könyvesbolt kölcsönhatásához:

nyilvános osztályú BookStoreRunSteps {privát BookStore áruház; privát List foundBooks; privát Könyv találtKönyv; @ Nyilvános void előtt setUp () {store = new BookStore (); foundBooks = new ArrayList (); } @Given ("^ A következő könyvek vannak a boltban $") public void haveBooksInTheStore (DataTable table) {List sorok = table.asLists (karakterlánc.osztály); for (Lista oszlopok: sorok) {store.addBook (új Könyv (oszlopok.get (0), oszlopok.get (1))); }} @When ("^ könyveket keresek szerzők szerint. } @When ("^ ((++ $) könyvre keresek" public void searchForBookByTitle (String title) {foundBook = store.bookByTitle (title) .orElse (null); } @Then ("^ I find (\ d +) books $") public void findBooks (int count) {assertEquals (count, foundBooks.size ()); } @Then ("^ találok egy könyvet $") public void findABook () {assertNotNull (foundBook); } @Akkor ("^ nem találok könyvet $") public void findNoBook () {assertNull (foundBook); }}

Ezekkel a mondatokkal felvehetünk könyveket, megkereshetjük őket szerző vagy cím alapján, és ellenőrizhetjük, hogy megtaláljuk-e őket.

Most minden megvan, hogy létrehozzuk a funkciónkat. Megkeressük a könyveket szerzőjük, de címük szerint is:

Jellemző: Könyvesbolt háttérszcenárió nélkül: Keresse meg a szerző könyveit Tekintettel arra, hogy a következő könyveket tartom a boltban | Az ördög a fehér városban Erik Larson | | Az oroszlán, a boszorkány és a szekrény | C.S. Lewis | | A Vadállatok Kertjében | Erik Larson | Amikor Erik Larson szerző könyveit keresem, akkor 2 könyvet találok. Forgatókönyv: Keress szerzők könyveit, de nincsenek, mivel a következő könyvek vannak a boltban | Az ördög a fehér városban Erik Larson | | Az oroszlán, a boszorkány és a szekrény | C.S. Lewis | | A Vadállatok Kertjében | Erik Larson | Amikor könyveket keresek szerző szerint Marcel Proust, akkor 0 könyvet találok. Forgatókönyv: Könyv keresése cím szerint, mivel a következő könyvek vannak a boltban | Az ördög a fehér városban Erik Larson | | Az oroszlán, a boszorkány és a szekrény | C.S. Lewis | | A Vadállatok Kertjében | Erik Larson | Amikor egy könyvet keresek Az oroszlán, a boszorkány és a ruhásszekrény címmel, akkor találok egy könyv forgatókönyvet: Könyv keresése cím szerint, de nincs ott Tekintve, hogy a következő könyvek vannak a boltban | Az ördög a fehér városban Erik Larson | | Az oroszlán, a boszorkány és a szekrény | C.S. Lewis | | A Vadállatok Kertjében | Erik Larson | Amikor egy könyvet keresek Swann's Way címmel, akkor nem találok könyvet

Ez a funkció jól működik, de kissé bőbeszédű, mert minden teszthez inicializáljuk a tárolót. Ez nemcsak sok sort hoz létre, de ha frissítenünk kell a boltot, akkor ezt minden tesztnél meg kell tennünk. Ekkor jöhet az uborka háttér.

3. Példa

Szóval, hogyan lehet létrehozni egy hátteret az áruház létrehozásához ehhez a funkcióhoz? Ehhez a kulcsszót kell használnunk Háttér, adj neki címet, mint mi a Forgatókönyv, és definiálja a végrehajtandó mondatokat:

Háttér: A könyvesbolt A következő könyveket tartom a boltban | Az ördög a fehér városban Erik Larson | | Az oroszlán, a boszorkány és a szekrény | C.S. Lewis | | A Vadállatok Kertjében | Erik Larson |

Ha ezt megtettük, megszabadulhatunk ettől a mondattól a teszteken, és hagyhatjuk, hogy a sajátosságaikra koncentráljanak:

Forgatókönyv: Könyvek keresése szerző szerint Amikor Erik Larson írói könyveket keresek, akkor 2 könyvet találok. Forgatókönyv: Keressem meg a szerző könyvét, de nincsen? Ha szerzői könyveket keresek Marcel Proust, akkor 0 könyvet találok. Forgatókönyv: Könyv keresése cím szerint Amikor egy könyvet keresek Az oroszlán, a boszorkány és a ruhásszekrény címmel, akkor találok egy könyvet Forgatókönyv: Könyv keresése cím szerint, de nem ott van?

Ahogy látjuk, a forgatókönyvek sokkal rövidebbek mint korábban, és a fennmaradó mondatok arra összpontosítanak, amit megpróbálunk tesztelni, nem pedig az adatok beállítása.

4. Különbség a @Előtt

Most beszéljük meg az uborka háttér és a @Előtt horog. A horog lehetővé teszi számunkra a kód végrehajtását egy forgatókönyv előtt is, de ez a kód el van rejtve azok elől, akik csak a funkciófájlokat olvasják. Másrészt a Háttér a jellemző fájlokban látható mondatokból készül.

5. Következtetés

Ebben a rövid cikkben megtanultuk az Uborka Háttér funkció használatát. Ez lehetővé teszi számunkra, hogy néhány jellemző előtt minden mondatot végrehajtsunk. Megbeszéltük továbbá a különbséget e tulajdonság és a @Előtt horog.

Szokás szerint a cikk kódja megtalálható a GitHubon.