Bevezetés Jukito-ba

1. Áttekintés

A Jukito a JUnit, a Guice és a Mockito együttes ereje - ugyanazon interfész több megvalósításának tesztelésének egyszerűsítésére szolgál.

Ebben a cikkben azt fogjuk megtudni, hogy a szerzőknek hogyan sikerült ezt a három könyvtárat összekapcsolniuk, hogy segítsen számunkra sok kazánlemez-kód csökkentésében, ezáltal a tesztek rugalmasak és egyszerűvé válnak.

2. Beállítás

Először a következő függőséget adjuk hozzá projektünkhöz:

 org.jukito jukito 1.5 teszt 

A legújabb verziót a Maven Central oldalon találjuk.

3. Egy interfész különböző megvalósításai

A Jukito erejének megértése érdekében meghatározunk egy egyszerűt Számológép interfész egy Hozzáadás módszer:

nyilvános felület Számológép {public double add (double a, double b); }

És a következő felületet fogjuk megvalósítani:

public class SimpleCalculator megvalósítja a Számológépet {@Orride public double add (double a, double b) {return a + b; }}

Szükségünk van egy másik megvalósításra is:

a public class ScientificCalculator kiterjeszti a SimpleCalculator alkalmazást {}

Most a Jukito segítségével teszteljük mindkét megvalósításunkat:

@RunWith (JukitoRunner.class) public class CalculatorTest {public static class Module extends JukitoModule {@Orride protected void configureTest () {bindMany (Calculator.class, SimpleCalculator.class, ScientificCalculator.class); }} @Test public void givenTwoNumbers_WhenAdd_ThenSumBoth (@Minden Calculator calc) {dupla eredmény = calc.add (1, 1); assertEquals (2, eredmény, .1); }}

Ebben a példában láthatjuk a JukitoModule, hogy az összes meghatározott megvalósításban vezeték van.

A @Minden az annotáció ugyanannak az interfésznek a JukitoModule és lefuttatja a tesztet az összes különböző megvalósítással futás közben.

Ha teszteket futtatunk, láthatjuk, hogy valóban két tesztet futtatnak egy helyett:

Futtatott tesztek: 2, hibák: 0, hibák: 0, kihagyott: 0

4. A derékszögű termék

Adjunk hozzá egy egyszerű beágyazott osztályt a tesztek különböző kombinációihoz Hozzáadás módszer:

public static class AdditionTest {int a; int b; int várható; // szabványos kivitelezők / szerelők}

Ez megnöveli a futtatható tesztek számát, de először hozzá kell adnunk további kötéseket a fájlunkba configureTest módszer:

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

És végül hozzáadunk egy újabb tesztet a csomagunkhoz:

@Test public void givenTwoNumbers_WhenAdd_ThenSumBoth (@Minden Calculator calc, @All AdditionTest addTest) {double result = calc.add (addTest.a, addTest.b); assertEquals (addTest.expected, result, .1); }

Most a @Minden az annotáció a derékszög különböző megvalósításai közötti különböző kombinációk derékszögű termékét állítja elő Számológép interfész és a AdditionTest példányok.

Megtekinthetjük a mostanában megnövekedett tesztek számát:

Futtatott tesztek: 8, hibák: 0, hibák: 0, kihagyott: 0

Emlékeznünk kell arra, hogy a tesztes végrehajtások száma drasztikusan nő a derékszögű termékeknél.

Az összes teszt végrehajtási ideje lineárisan nő a végrehajtások számával. i: e .: három paraméteres vizsgálati módszer an-val @Minden annotáció és paraméterenként négy kötés 4 x 4 x 4 = 64 alkalommal kerül végrehajtásra.

Öt kötés ugyanazon vizsgálati módszer esetén 5 x 5 x 5 = 125 kivégzéshez vezet.

5. Csoportosítás név szerint

Az utolsó jellemző, amelyet megvitatunk, a név szerinti csoportosítás:

bindManyNamedInstances (Egész szám.osztály, "páros", 2, 4, 6); bindManyNamedInstances (Egész szám.osztály, "páratlan", 1, 3, 5);

Itt hozzáadtuk az egész osztály néhány megnevezett példányát a sajátunkhoz configureTest módszer bemutatásához, hogy mit lehet tenni ezekkel a csoportokkal.

Most adjunk hozzá még néhány tesztet:

@ Teszt nyilvános érvényesség adottEvenNumbers_whenPrint_thenOutput (@All ("páros") Egész szám i) {System.out.println ("páros" + i); } @Test public void givenOddNumbers_whenPrint_thenOutput (@All ("páratlan") Egész i) {System.out.println ("páratlan" + i); }

A fenti példa kinyomtatja a hat karakterláncot: „páros 2”, „páros 4”, „páros 6”, „páratlan 1”, „páratlan 3”, „páratlan 5”.

Ne feledje, hogy ezek sorrendje futás közben nem garantált.

6. Következtetés

Ebben a gyors bemutatóban megvizsgáltuk, hogyan engedi Jukito egy teljes tesztkészlet használatát, elegendő teszteset-kombinációval.

A teljes példa a GitHub oldalon található.