Bruke JUnit 5 med Gradle

1. Oversikt

I denne opplæringen skal vi kjøre tester på den nye JUnit 5-plattformen med byggeverktøyet Gradle.

Vi konfigurerer et prosjekt som støtter både den gamle og den nye versjonen.

Les gjerne En guide til JUnit 5 for mer informasjon om den nye versjonen. Eller Introduksjon til Gradle for grundig informasjon om byggeverktøyet.

2. Gradle Setup

Først verifiserer vi om versjon 4.6 eller nyere av byggeverktøyet er installert, siden det er den tidligste versjonen som fungerer med JUnit 5.

Den enkleste måten er å bare kjøre gradering -v kommando:

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

Og om nødvendig kan vi følge installasjonstrinnene for å få riktig versjon.

Når vi har installert alt, må vi konfigurere Gradle ved å bruke build.gradle fil.

Vi kan starte med å levere enhetstestplattformen til byggeverktøyet:

test {useJUnitPlatform ()} 

Nå som vi har spesifisert plattformen, må vi levere JUnit-avhengigheter. Det er her vi ser en bemerkelsesverdig forskjell mellom JUnit 5 og tidligere versjoner.

Se, med tidligere versjoner trengte vi bare en avhengighet. I JUnit 5 er API imidlertid skilt fra kjøretiden, noe som betyr to avhengigheter.

API-et er manifestert med junit-jupiter-api. Kjøretiden er junit-jupiter-motor for JUnit 5, og junit-vintage-motor for JUnit 3 eller 4.

Vi leverer disse to inn testImplementering og timeRuntimeOnly, henholdsvis:

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

3. Lage tester

La oss skrive vår første test. Det ser ut som tidligere versjoner:

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

Nå, vi kan kjøre testen ved å utføre gradere ren test kommando.

For å bekrefte at vi bruker JUnit 5 kan vi se på importen. Importen for @Test og hevderEquals burde ha en pakke som starter med org.junit.jupiter.api:

importer org.junit.jupiter.api.Test; importer statisk org.junit.jupiter.api.Assertions.assertEquals;

Så i det siste eksemplet opprettet vi en test med ‘gammel’ funksjonalitet som har fungert i årevis. Vi lager nå et annet eksempel som bruker noe av den nye funksjonaliteten i JUnit 5:

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

hevder Kaster er en ny påstand i JUnit5 som erstatter den gamle stilen til @Test (forventet = ArithmeticException.class).

4. Konfigurere JUnit 5-tester med Gradle

Deretter vil vi utforske litt dypere integrasjon mellom Gradle og JUnit5.

La oss si at vi har to typer tester i suiten vår: langvarig og kortvarig. Vi kan bruke JUnit 5 @Stikkord kommentar:

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

Deretter forteller vi byggeverktøyet hvilke som skal utføres. I vårt tilfelle, la oss bare utføre kortvarige (raske) tester:

test {useJUnitPlatform {includeTags 'rask' excludeTags 'treg'}}

5. Aktivere støtte for gamle versjoner

Nå er det fortsatt mulig å lage JUnit 3 og 4 tester med den nye Jupiter-motoren. Enda mer kan vi blande dem med den nye versjonen i det samme prosjektet, for eksempel i et migrasjonsscenario.

For å begynne med legger vi til noen avhengigheter i den eksisterende byggekonfigurasjonen:

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

Legg merke til hvordan prosjektet vårt nå har begge deler junit-jupiter-motor i tillegg til junit-vintage-motor.

Nå oppretter vi en ny klasse og kopier og lim inn testDel metoden vi opprettet tidligere. Deretter legger vi til import for @Test og hevderEquals. Denne gangen sørger vi imidlertid for å bruke de gamle versjonen 4-pakkene som starter med org.junit:

importer statisk org.junit.Assert.assertEquals; importer org.junit.Test; public class CalculatorJUnit4Test {@Test public void testAdd () {assertEquals (42, Integer.sum (19, 23)); }}

6. Konklusjon

I denne veiledningen integrerte vi Gradle med JUnit 5. Enda mer la vi også til støtte for versjon 3 og 4.

Vi har sett at byggeverktøyet gir utmerket støtte for de gamle og nye versjonene. Derfor kan vi bruke de nye funksjonene i et eksisterende prosjekt uten å måtte endre alle eksisterende tester.

Det komplette kodeeksemplet er tilgjengelig i GitHub-prosjektet. Bruk den gjerne som utgangspunkt for ditt eget prosjekt.


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