Korištenje JUnit 5 s Gradleom

1. Pregled

U ovom uputstvu pokrenut ćemo testove na novoj platformi JUnit 5 pomoću alata Gradle build.

Konfigurirat ćemo projekt koji podržava i staru i novu verziju.

Slobodno pročitajte Vodič za JUnit 5 za više informacija o novoj verziji. Ili Uvod u Gradle za dubinske informacije o alatu za izradu.

2. Postavljanje Gradlea

Prvo provjeravamo je li instalirana verzija 4.6 ili novija alata za izgradnju jer je to najranija verzija koja radi s JUnit 5.

Najjednostavniji način je jednostavno pokrenuti gradle -v naredba:

$> gradle -v --------------------------------------------- --------------- Gradle 4.10.2 ------------------------------- -----------------------------

Ako je potrebno, možemo slijediti korake instalacije kako bismo dobili pravu verziju.

Nakon što sve instaliramo, tada moramo konfigurirati Gradle pomoću graditi.gradle datoteka.

Možemo započeti isporukom jedinice test platforme alatu za izradu:

test {useJUnitPlatform ()} 

Sad kad smo naveli platformu, moramo dostaviti ovisnosti JUnit. Ovdje vidimo zapaženu razliku između JUnit 5 i ranijih verzija.

Vidite, s ranijim verzijama trebala nam je samo jedna ovisnost. U JUnit 5, međutim, API je odvojen od vremena izvođenja, što znači dvije ovisnosti.

API je manifest sa junit-jupiter-api. Vrijeme izvođenja je junit-jupiter-motor za JUnit 5 i junit-berba-motor za JUnit 3 ili 4.

Opskrbit ćemo ovo dvoje testImplementacija i timeRuntimeOnly, odnosno:

ovisnosti {testImplementation 'org.junit.jupiter: junit-jupiter-api: 5.3.1' testRuntimeOnly 'org.junit.jupiter: junit-jupiter-engine: 5.3.1'}

3. Izrada testova

Napišimo svoj prvi test. Izgleda baš poput ranijih verzija:

@Test public void testAdd () {assertEquals (42, Integer.sum (19, 23)); }

Sada, možemo pokrenuti test izvršavanjem test čiste gradle naredba.

Da bismo provjerili koristimo li JUnit 5, možemo pogledati uvoz. Uvoz za @Test i assertEquals treba imati paket koji započinje s org.junit.jupiter.api:

uvoz org.junit.jupiter.api.Test; uvoz statičkih org.junit.jupiter.api.Assertions.assertEquals;

Tako smo u posljednjem primjeru stvorili test sa ‘starom’ funkcionalnošću koji djeluje već godinama. Sada ćemo stvoriti još jedan primjer koji koristi neke od novih funkcionalnosti u JUnit 5:

@Test public void testDivide () {assertThrows (ArithmeticException.class, () -> {Integer.divideUnsigned (42, 0);}); }

assertThrows je nova tvrdnja u JUnit5 koja zamjenjuje stari stil @Test (očekuje se = ArithmeticException.class).

4. Konfiguriranje testova JUnit 5 s Gradleom

Dalje ćemo istražiti dublju integraciju između Gradlea i JUnit5.

Recimo da u našem paketu imamo dvije vrste testova: dugotrajne i kratkoročne. Mogli bismo koristiti JUnit 5 @Označiti napomena:

javna klasa CalculatorJUnit5Test {@Tag ("slow") @Test public void testAddMaxInteger () {assertEquals (2147483646, Integer.sum (2147183646, 300000)); } @Tag ("fast") @Test public void testDivide () {assertThrows (ArithmeticException.class, () -> {Integer.divideUnsigned (42, 0);}); }}

Zatim kažemo alatu za izgradnju koje treba izvršiti. U našem slučaju, samo izvršimo kratkoročne (brze) testove:

test {useJUnitPlatform {includeTags 'fast' excludeTags 'slow'}}

5. Omogućavanje podrške za stare verzije

Sada je još uvijek moguće stvoriti testove JUnit 3 i 4 s novim Jupiterovim motorom. Čak štoviše, možemo ih kombinirati s novom verzijom u istom projektu, recimo, u scenariju migracije.

Za početak dodamo neke ovisnosti postojećoj konfiguraciji gradnje:

testCompileOnly 'junit: junit: 4.12' testRuntimeOnly 'org.junit.vintage: junit-vintage-engine: 5.3.1'

Primijetite kako naš projekt sada ima oboje junit-jupiter-motor kao i junit-berba-motor.

Sada kreiramo novu klasu i kopiramo zalijepite testDijeli metoda koju smo stvorili ranije. Zatim dodamo uvoz za @Test i assertEquals. Međutim, ovaj put obavezno koristimo staru verziju 4 paketa počevši od toga org.junit:

uvoz statičke org.junit.Assert.assertEquals; uvoz org.junit.Test; javna klasa CalculatorJUnit4Test {@Test public void testAdd () {assertEquals (42, Integer.sum (19, 23)); }}

6. Zaključak

U ovom uputstvu integrirali smo Gradle s JUnit 5. Čak smo i dodali podršku za verzije 3 i 4.

Vidjeli smo da alat za izgradnju pruža izvrsnu podršku za stare i nove verzije. Stoga možemo koristiti nove značajke u postojećem projektu bez potrebe za promjenom svih naših postojećih testova.

Cjelovit primjer koda dostupan je u projektu GitHub. Slobodno ga koristite kao polazište za vlastiti projekt.


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