Úvod do Jukita

1. Prehľad

Jukito je kombinovaná sila JUnit, Guice a Mockito - používa sa na zjednodušenie testovania viacerých implementácií toho istého rozhrania.

V tomto článku sa pozrieme na to, ako sa autorom podarilo spojiť tieto tri knižnice, aby nám pomohli znížiť množstvo štandardných kódov, vďaka čomu budú naše testy flexibilné a ľahké.

2. Nastavenie

Najskôr do nášho projektu pridáme nasledujúcu závislosť:

 org.jukito jukito 1.5 test 

Najnovšiu verziu nájdeme na serveri Maven Central.

3. Rôzne implementácie rozhrania

Aby sme začali chápať silu Jukita, definujeme jednoduchý Kalkulačka rozhranie s Pridať metóda:

verejné rozhranie Kalkulačka {verejné dvojité pridanie (dvojité a, dvojité b); }

A ideme implementovať nasledujúce rozhranie:

verejná trieda SimpleCalculator implementuje kalkulačku {@Override public double add (double a, double b) {return a + b; }}

Potrebujeme tiež ďalšiu implementáciu:

verejná trieda ScientificCalculator rozširuje SimpleCalculator {}

Teraz poďme pomocou Jukita otestovať obe naše implementácie:

@RunWith (JukitoRunner.class) verejná trieda CalculatorTest {modul verejnej statickej triedy rozširuje JukitoModule {@Override chránený neplatný configureTest () {bindMany (Calculator.class, SimpleCalculator.class, ScientificCalculator.class); }} @Test public void givenTwoNumbers_WhenAdd_ThenSumBoth (@ All Calculator calc) {dvojitý výsledok = calc.add (1, 1); assertEquals (2, výsledok, .1); }}

V tomto príklade môžeme vidieť a Modul Jukito, že drôty vo všetkých špecifikovaných implementáciách.

The @ Všetky anotácia berie všetky väzby toho istého rozhrania vykonané serverom Modul Jukito a vykoná test so všetkými rôznymi implementáciami vloženými za behu programu.

Ak spustíme testy, môžeme vidieť, že namiesto jedného sú spustené dva testy:

Priebeh testov: 2, zlyhania: 0, chyby: 0, preskočenie: 0

4. Kartézsky súčin

Poďme teraz pridať jednoduchú vnorenú triedu pre rôzne kombinácie testov pre našu Pridať metóda:

verejná statická trieda AdditionTest {int a; int b; int očakávané; // štandardné konštruktory / getre}

To rozšíri počet testov, ktoré môžeme spustiť, ale najskôr musíme do nášho pridať ďalšie väzby configureTest metóda:

bindManyInstances (AdditionTest.class, new AdditionTest (1, 1, 2), new AdditionTest (10, 10, 20), new AdditionTest (18, 24, 42));

A na záver pridáme do našej sady ďalší test:

@Test public void givenTwoNumbers_WhenAdd_ThenSumBoth (@All Calculator calc, @All AdditionTest addTest) {dvojitý výsledok = calc.add (addTest.a, addTest.b); assertEquals (addTest.exected, result, .1); }

Teraz the @ Všetky v anotácii sa vytvorí karteziánsky súčin rôznych kombinácií medzi rôznymi implementáciami Kalkulačka rozhranie a Test dodatku inštancie.

Môžeme sa pozrieť na zvýšený počet testov, ktoré teraz produkuje:

Spustené testy: 8, Zlyhania: 0, Chyby: 0, Vynechané: 0

Musíme si uvedomiť, že počet vykonaní testu sa u karteziánskych výrobkov drasticky zvyšuje.

Čas vykonania všetkých testov bude narastať lineárne s počtom vykonaní. i: e .: skúšobná metóda s tromi parametrami s @ Všetky anotácia a štyri väzby na parameter sa vykonajú 4 x 4 x 4 = 64-krát.

Mať päť väzieb pre tú istú skúšobnú metódu povedie k 5 x 5 x 5 = 125 vykonaniam.

5. Zoskupovanie podľa mien

Poslednou funkciou, o ktorej budeme diskutovať, je zoskupenie podľa názvu:

bindManyNamedInstances (Integer.class, "even", 2, 4, 6); bindManyNamedInstances (Integer.class, "nepárne", 1, 3, 5);

Tu sme do našej pridali niekoľko pomenovaných inštancií celočíselnej triedy configureTest čo je možné urobiť s týmito skupinami.

Teraz pridajme ďalšie testy:

@Test public void givenEvenNumbers_whenPrint_thenOutput (@All ("even") Integer i) {System.out.println ("even" + i); } @Test public void givenOddNumbers_whenPrint_thenOutput (@All ("nepárne") celé číslo i) {System.out.println ("nepárne" + i); }

Vyššie uvedený príklad vytlačí šesť reťazcov „párne 2“, „párne 4“, „párne 6“, „nepárne 1“, „nepárne 3“, „nepárne 5“.

Majte na pamäti, že ich poradie nie je za behu zaručené.

6. Záver

V tomto rýchlom výučbe sme sa pozreli na to, ako Jukito umožňuje použitie celej testovacej sady, a to poskytnutím dostatočného množstva kombinácií testovacích prípadov.

Celý príklad nájdete na GitHub.


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