Uhorka pozadia

1. Prehľad

V tomto krátkom tutoriále sa dozvieme niečo o Cucumber Backgrounds, čo je funkcia, ktorá nám umožňuje vykonávať niektoré vety pre každý test funkcie Cucumber.

2. Uhorka na pozadí

Najprv si vysvetlíme, čo je to uhorkové pozadie. Jeho účelom je vykonať jednu alebo viac viet pred každým testom vlastnosti.

Aký problém sa tu však snažíme vyriešiť?

Povedzme, že máme aplikáciu v kníhkupectve, ktorú chceme testovať s uhorkou. Najskôr si vytvorme aplikáciu, ktorá bude jednoducho triedou Java:

public class BookStore {private List books = new ArrayList (); public void addBook (Book book) {books.add (book); } public List booksByAuthor (autor reťazcov) {return books.stream () .filter (kniha -> Objects.equals (autor, book.getAuthor ())) .collect (Collectors.toList ()); } public Voliteľné bookByTitle (názov reťazca) {návrat books.stream () .filter (kniha -> book.getTitle (). equals (názov)) .findFirst (); }}

Ako vidíme, v obchode je možné pridávať a vyhľadávať knihy. Poďme si teraz vytvoriť niekoľko uhorkových viet na interakciu s kníhkupectvom:

public class BookStoreRunSteps {private BookStore store; nájdený súkromný zoznamKnihy; súkromná kniha nájdená kniha; @ Pred public void setUp () {store = new BookStore (); foundBooks = new ArrayList (); } @Given ("^ Mám v obchode tieto knihy:") public void haveBooksInTheStore (tabuľka DataTable) {Zoznam riadky = table.asLists (String.class); pre (Zoznam stĺpcov: riadky) {store.addBook (nová kniha (columns.get (0), columns.get (1))); }} @Keď ("^ Hľadám knihy podľa autora (. +) $") Public void searchForBooksByAuthor (autor reťazca) {foundBooks = store.booksByAuthor (autor); } @When ("^ Hľadám knihu s názvom (. +) $") Public void searchForBookByTitle (názov reťazca) {foundBook = store.bookByTitle (názov) .orElse (null); } @Then ("^ I find (\ d +) books $") public void findBooks (int count) {assertEquals (count, foundBooks.size ()); } @ Potom ("^ Nájdem knihu $") public void findABook () {assertNotNull (foundBook); } @Then ("^ nenájdu žiadnu knihu $") public void findNoBook () {assertNull (foundBook); }}

Pomocou týchto viet môžeme pridávať knihy, vyhľadávať ich podľa autora alebo názvu a skontrolovať, či ich nájdeme alebo nie.

Teraz je všetko pripravené na vytvorenie našej funkcie. Vyhľadáme knihy podľa ich autora, ale aj podľa názvu:

Funkcia: Kníhkupectvo bez pozadia Scenár: Nájsť knihy od autora Vzhľadom na to, že v obchode mám tieto knihy | Diabol v Bielom meste Erik Larson | | Lev, čarodejnica a šatník C.S. Lewis | | V záhrade zvierat Erik Larson | Keď hľadám knihy od autora Erik Larson, potom nájdem 2 knihy. Scenár: Nájsť knihy od autora, ale nie je to dané. Mám v obchode tieto knihy | Diabol v Bielom meste Erik Larson | | Lev, čarodejnica a šatník C.S. Lewis | | V záhrade zvierat Erik Larson | Keď hľadám knihy od autora Marcel Proust Potom nájdem 0 kníh Scenár: Nájsť knihu podľa názvu Vzhľadom k tomu, že mám v obchode tieto knihy | Diabol v Bielom meste Erik Larson | | Lev, čarodejnica a šatník C.S. Lewis | | V záhrade zvierat Erik Larson | Keď hľadám knihu s názvom Lev, čarodejnica a šatník, potom nájdem knihu Scenár: Nájsť knihu podľa názvu, ale nie je to dané Mám v obchode nasledujúce knihy | Diabol v Bielom meste Erik Larson | | Lev, čarodejnica a šatník C.S. Lewis | | V záhrade zvierat Erik Larson | Keď hľadám knihu s názvom Swannova cesta, potom nenájdem žiadnu knihu

Táto funkcia funguje dobre, ale má tendenciu byť trochu podrobný, pretože inicializujeme úložisko pre každý test. Nielenže to vytvára veľa riadkov, ale ak máme aktualizovať obchod, musíme to urobiť pre každý test. Vtedy sa hodí Uhorkové pozadie.

3. Príklad

Ako teda vytvoriť pozadie vytvárajúce úložisko pre túto funkciu? Aby sme to dosiahli, musíme použiť kľúčové slovo Pozadie, dajte mu názov, ako to robíme pre a Scenára definujte vety, ktoré sa majú vykonať:

Pozadie: Kníhkupectvo Vzhľadom na to, že mám v obchode nasledujúce knihy Diabol v Bielom meste Erik Larson | | Lev, čarodejnica a šatník C.S. Lewis | | V záhrade zvierat Erik Larson |

Keď to urobíme, môžeme sa tejto vety v testoch zbaviť a nechať ich zamerať sa na ich špecifiká:

Scenár: Nájsť knihy od autora Keď hľadám knihy od autora Erik Larson Potom nájdem 2 knihy Scenár: Nájsť knihy od autora, ale nie je tam Keď hľadám knihy od autora Marcel Proust Potom nájdem 0 kníh Scenár: Nájsť knihu podľa názvu Keď hľadám knihu s názvom Lev, čarodejnica a šatník, potom nájdem knihu Scenár: Nájsť knihu podľa názvu, ale nie je tam Keď hľadám knihu s názvom Swannova cesta, potom nenájdem žiadnu knihu

Ako vidíme, scenáre sú oveľa kratšie než predtým a zostávajúce vety sa zameriavajú skôr na to, čo sa snažíme testovať, ako na nastavovanie údajov.

4. Rozdiel s @ Predtým

Teraz poďme diskutovať o rozdieloch medzi uhorkovým pozadím a @ Predtým háčik. Háčik nám tiež umožňuje spustiť kód pred scenárom, ale tento kód je skrytý pre tých, ktorí iba čítajú súbory funkcií. Na druhej strane je Pozadie tvorené vetami, ktoré sú viditeľné v súboroch funkcií.

5. Záver

V tomto krátkom článku sme sa naučili, ako používať funkciu Cucumber Background. Umožňuje nám to vykonať niekoľko viet pred každým scenárom funkcie. Diskutovali sme tiež o rozdiele medzi touto funkciou a @ Predtým háčik.

Ako obvykle, kód tohto článku nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found