Uvod u Jukito

1. Pregled

Jukito je kombinirana snaga JUnit-a, Guice-a i Mockita-koristi se za pojednostavljivanje testiranja višestrukih implementacija istog sučelja.

U ovom ćemo članku vidjeti kako su autori uspjeli kombinirati te tri knjižnice kako bi nam pomogli smanjiti puno standardnih kodova, čineći naše testove fleksibilnima i jednostavnima.

2. Postavljanje

Prvo ćemo našem projektu dodati sljedeću ovisnost:

 org.jukito jukito 1.5 test 

Najnoviju verziju možemo pronaći na Maven Central.

3. Različite implementacije sučelja

Da bismo započeli razumijevanje moći Jukita, definirat ćemo jednostavan Kalkulator sučelje s Dodati metoda:

kalkulator javnog sučelja {javni dvostruki dodatak (dvostruki a, dvostruki b); }

A implementirat ćemo sljedeće sučelje:

javna klasa SimpleCalculator implementira Kalkulator {@Preuzmi javni dvostruki dodatak (dvostruki a, dvostruki b) {return a + b; }}

Također nam treba još jedna implementacija:

public class ScientificCalculator proširuje SimpleCalculator {}

Sada, iskoristimo Jukito za testiranje obje naše implementacije:

@RunWith (JukitoRunner.class) javna klasa CalculatorTest {javni statički modul klase proširuje JukitoModule {@Override protected void configureTest () {bindMany (Calculator.class, SimpleCalculator.class, ScientificCalculator.class); }} @Test javna praznina givenTwoNumbers_WhenAdd_ThenSumBoth (@All Calculator calc) {double result = calc.add (1, 1); assertEquals (2, rezultat, .1); }}

U ovom primjeru možemo vidjeti a JukitoModule, koji se povezuju u svim navedenim izvedbama.

The @Svi napomena uzima sve veze istog sučelja koje je napravio JukitoModule i pokreće test sa svim različitim implementacijama ubrizganim tijekom izvođenja.

Ako pokrenemo testove, možemo vidjeti da se doista izvode dva testa umjesto jednog:

Izvršeni testovi: 2, neuspjesi: 0, pogreške: 0, preskočeni: 0

4. Dekartov proizvod

Dodajmo sada jednostavnu ugniježđenu klasu za različite kombinacije testova za naš Dodati metoda:

javna statička klasa AdditionTest {int a; int b; int očekivano; // standardni konstruktori / getteri}

To će proširiti broj testova koje možemo pokrenuti, ali prvo moramo dodati dodatne vezove u naš configureTest metoda:

bindManyInstance (AdditionTest.class, novi AdditionTest (1, 1, 2), novi AdditionTest (10, 10, 20), novi AdditionTest (18, 24, 42));

I na kraju u svoj paket dodajemo još jedan test:

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

Sada the @Svi anotacija će proizvesti kartezijanski proizvod različitih kombinacija između različitih implementacija Kalkulator sučelje i AdditionTest instance.

Možemo pogledati povećani broj testova koje sada proizvodi:

Izvršeni testovi: 8, neuspjesi: 0, pogreške: 0, preskočeni: 0

Moramo imati na umu da se broj pokusaja drastično povećava za kartezijanske proizvode.

Vrijeme izvršavanja svih testova postat će linearno s brojem izvršavanja. i: e .: ispitna metoda s tri parametra s @Svi napomena i četiri uvezivanja po parametru izvršit će se 4 x 4 x 4 = 64 puta.

Posjedovanje pet veza za istu metodu ispitivanja dovest će do 5 x 5 x 5 = 125 izvršenja.

5. Grupiranje po imenima

Posljednja značajka o kojoj ćemo razgovarati je grupiranje po imenu:

bindManyNamedInstance (Integer.class, "even", 2, 4, 6); bindManyNamedInstance (Integer.class, "ak", 1, 3, 5);

Ovdje smo dodali nekoliko imenovanih primjera klase cijelih brojeva configureTest metodom, kako bi se prikazalo što se može učiniti s tim skupinama.

Sad ćemo dodati još nekoliko testova:

@Test javna praznina givenEvenNumbers_whenPrint_thenOutput (@All ("even") Integer i) {System.out.println ("even" + i); } @Test javna praznina givenOddNumbers_whenPrint_thenOutput (@All ("odd") Integer i) {System.out.println ("odd" + i); }

Gornji primjer ispisat će šest nizova "even 2", "even 4", "even 6", "nepar 1", "nepar 3", "nepar 5".

Imajte na umu da njihov redoslijed nije zajamčen tijekom izvođenja.

6. Zaključak

U ovom smo brzom uputstvu pogledali kako Jukito dopušta upotrebu cijelog paketa testova, pružajući taman dovoljno kombinacija test slučajeva.

Cjelovit primjer možete pronaći na GitHubu.


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