Obrys uhorky a scenára

1. Úvod

Cucumber je testovací rámec BDD (Behavioral Driven Development).

Pomocou rámca písať opakujúce sa scenáre s rôznymi permutáciami vstupov / výstupov môžu byť dosť časovo náročné, ťažko udržiavateľné a samozrejme frustrujúce.

Uhorka priniesla riešenie na zníženie tohto úsilia pomocou koncepcie Osnova scenára spojená s príkladmi. V nasledujúcej časti sa pokúsime vziať si príklad a zistiť, ako môžeme toto úsilie minimalizovať.

Ak si chcete prečítať viac o prístupe a orechovej reči, pozrite si tento článok.

2. Pridanie podpory uhorky

Ak chcete pridať podporu pre Cucumber do jednoduchého projektu Maven, budeme musieť pridať nasledujúce závislosti:

 test info.cukes uhorka-junit 1.2.5 test info.cukes uhorka-java 1.2.5 test org.hamcrest hamcrest-library 1.3 test 

Užitočné odkazy na závislosti od Maven Central: uhorka-junit, uhorka-java, hamcrest-knižnica

Pretože sa jedná o testovacie knižnice, nemusí sa dodávať so skutočným nasadením - preto sú všetky test rozsahom.

3. Jednoduchý príklad

Ukážme si nafúknutý aj výstižný spôsob písania odporúčaných súborov. Najprv si definujeme logiku, pre ktorú chceme napísať test:

Najprv si definujeme logiku, pre ktorú chceme napísať test:

public class Calculator {public int add (int a, int b) {return a + b; }}

4. Definovanie testov na uhorky

4.1. Definovanie súboru funkcií

Funkcia: Kalkulačka Ako používateľ chcem na pridanie čísel použiť kalkulačku, aby som sa nemusel pridávať. Scenár: Pridajte dve čísla -2 a 3 Vzhľadom na to, že mám kalkulačku Keď pridám -2 a 3, potom by výsledok mal scenár 1: Pridajte dve čísla 10 a 15 Vzhľadom na to, že mám kalkulačku Keď sčítam 10 a 15, potom by mal byť výsledok 25 

Ako je tu vidieť, boli tu otestované dve rôzne kombinácie čísel, aby sa vyskúšala logika sčítania. Okrem čísel sú všetky scenáre úplne rovnaké.

4.2. Kód „lepidla“

Aby sme mohli vyskúšať tieto scenáre, je nevyhnutné definovať každý krok zodpovedajúcim kódom, aby sme mohli príkaz preložiť do funkčnej časti kódu:

verejná trieda CalculatorRunSteps {private int celkom; súkromná kalkulačka kalkulačka; @ Pred private void init () {total = -999; } @Given ("^ Mám kalkulačku $") public void initializeCalculator () hodí Throwable {calculator = new Calculator (); } @Keď ("^ pridám (-? \ d +) a (-? \ d +) $") public void testAdd (int num1, int num2) hodí Throwable {total = calculator.add (num1, num2); } @Then ("^ výsledkom by malo byť (-? \ d +) $") public void validateResult (výsledok int) hodí Throwable {Assert.assertThat (total, Matchers.equalTo (result)); }}

4.3. Trieda bežcov

S cieľom integrovať funkcie a kód lepidla môžeme použiť bežce JUnit:

@RunWith (Cucumber.class) @CucumberOptions (features = {"classpath: features / calculator.feature"}, lepidlo = {"com.baeldung.cucumber.calculator"}) verejná trieda CalculatorTest {}

5. Prepisovacie funkcie pomocou obrysov scenára

Pozreli sme sa na to v časti 4.1. ako definovanie súboru funkcií môže byť časovo náročná úloha a náchylnejšie na chyby. Rovnaký súbor funkcií je možné pomocou súboru zmenšiť na niekoľko riadkov Osnova scenára:

Funkcia: Kalkulačka Ako používateľ chcem používať kalkulačku na pridávanie čísel, aby som sa nemusel pridávať. Scenár Osnova: Pridajte dve čísla a vzhľadom na to mám kalkulačku Keď pridám a potom by výsledok mal byť Príklady: | num1 | num2 | spolu | | -2 | 3 | 1 | | 10 | 15 | 25 | | 99 | -99 | 0 | | -1 | -10 | -11 |

Pri porovnaní bežného Definícia scenára s Osnova scenára, hodnoty už v definíciách krokov nemusia byť pevne napísané. Hodnoty sa nahradia parametrami ako v samotnej definícii kroku.

Na konci Obrysu scenára sú hodnoty definované vo formáte tabuľky oddelenej potrubím pomocou Príklady.

Vzorka na definovanie Príklady je zobrazené nižšie:

Príklady: Parameter_Name1 | Parameter_Name2 | | Hodnota-1 | Hodnota-2 | | Hodnota-X | Hodnota-Y |

6. Záver

V tomto rýchlom článku sme si ukázali, ako je možné vytvoriť všeobecné scenáre. A tiež znížiť úsilie pri písaní a udržiavaní týchto scenárov.

Celý zdrojový kód tohto článku nájdete na GitHub.


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