Používanie JUnit 5 s programom Gradle

1. Prehľad

V tomto výučbe sa chystáme spustiť testy na novej platforme JUnit 5 pomocou nástroja na vytváranie Gradle.

Nakonfigurujeme projekt, ktorý podporuje starú aj novú verziu.

Môžete si prečítať Sprievodcu JUnit 5, kde nájdete ďalšie informácie o novej verzii. Alebo Úvod do Gradle, kde získate podrobné informácie o nástroji na zostavenie.

2. Nastavenie gradle

Najskôr overíme, či je nainštalovaný nástroj na zostavenie verzie 4.6 alebo novšej, pretože toto je najskoršia verzia, ktorá funguje s JUnit 5.

Najjednoduchší spôsob je spustiť gradle -v príkaz:

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

A ak je to potrebné, môžeme podľa pokynov na inštaláciu získať správnu verziu.

Keď už máme všetko nainštalované, potom musíme Gradle nakonfigurovať pomocou build.gradle spis.

Môžeme začať dodaním testovacej platformy jednotky do nástroja na zostavenie:

test {useJUnitPlatform ()} 

Teraz, keď sme špecifikovali platformu, musíme dodať závislosti JUnit. Tu vidíme pozoruhodný rozdiel medzi JUnit 5 a staršími verziami.

S predchádzajúcimi verziami sme potrebovali iba jednu závislosť. V JUnit 5 je ale API oddelené od runtime, čo znamená dve závislosti.

API sa prejavuje s junit-jupiter-api. Runtime je junit-jupiter-motor pre JUnit 5 a junit-vintage-motor pre JUnit 3 alebo 4.

Dodáme tieto dva testImplementácia a timeRuntimeOnly, v uvedenom poradí:

závislosti {testImplementation 'org.junit.jupiter: junit-jupiter-api: 5.3.1' testRuntimeOnly 'org.junit.jupiter: junit-jupiter-engine: 5.3.1'}

3. Tvorba testov

Poďme napísať náš prvý test. Vyzerá to ako predchádzajúce verzie:

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

Teraz, môžeme spustiť test vykonaním gradle čistý test príkaz.

Aby sme si overili, že používame JUnit 5, môžeme sa pozrieť na import. Dovoz za @Test a assertEquals by mal mať balík začínajúci na org.junit.jupiter.api:

import org.junit.jupiter.api.Test; importovať statický org.junit.jupiter.api.Assertions.assertEquals;

V poslednom príklade sme teda vytvorili test so „starou“ funkčnosťou, ktorý funguje už roky. Teraz si vytvoríme ďalší príklad, ktorý využíva niektoré nové funkcie v JUnit 5:

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

tvrdiťHodí je nové tvrdenie v JUnit5, ktoré nahrádza starý štýl @Test (očakáva sa = ArithmeticException.class).

4. Konfigurácia testov JUnit 5 pomocou programu Gradle

Ďalej preskúmame hlbšiu integráciu medzi programami Gradle a JUnit5.

Povedzme, že v našej sade máme dva typy testov: dlhodobý a krátkodobý. Mohli by sme použiť JUnit 5 @Tag anotácia:

public class 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);}); }}

Potom povieme nástroju na zostavenie, ktoré z nich majú byť spustené. V našom prípade vykonajme krátkodobé (rýchle) testy:

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

5. Povolenie podpory pre staré verzie

Teraz je stále možné vytvoriť testy JUnit 3 a 4 s novým jadrom Jupitera. Ba čo viac, môžeme ich zmiešať s novou verziou v rovnakom projekte, povedzme, v scenári migrácie.

Na začiatok pridáme do existujúcej konfigurácie zostavy určité závislosti:

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

Všimnite si, ako má náš projekt v súčasnosti oboje junit-jupiter-motor ako aj junit-vintage-motor.

Teraz vytvoríme novú triedu a skopírujeme ju testDivide metóda, ktorú sme vytvorili skôr. Potom pridáme import pre @Test a assertEquals. Tentokrát však používame staré balíčky verzie 4, od ktorých org.junit:

importovať statický org.junit.Assert.assertEquals; import org.junit.Test; verejná trieda CalculatorJUnit4Test {@Test public void testAdd () {assertEquals (42, Integer.sum (19, 23)); }}

6. Záver

V tomto tutoriáli sme integrovali Gradle do JUnit 5. Ešte viac sme pridali aj podporu pre verzie 3 a 4.

Videli sme, že nástroj na zostavenie poskytuje vynikajúcu podporu pre starú aj novú verziu. Preto môžeme používať nové funkcie v existujúcom projekte bez potreby zmeny všetkých našich existujúcich testov.

Celý príklad kódu je k dispozícii v projekte GitHub. Pokojne ho použite ako východiskový bod pre svoj vlastný projekt.


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