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.