Brug af JUnit 5 med Gradle

1. Oversigt

I denne vejledning vil vi køre tests på den nye JUnit 5-platform med Gradle build-værktøjet.

Vi konfigurerer et projekt, der understøtter både den gamle og den nye version.

Du er velkommen til at læse En guide til JUnit 5 for at få flere oplysninger om den nye version. Eller introduktionen til Gradle for detaljeret information om buildværktøjet.

2. Gradle-opsætning

Først kontrollerer vi, om version 4.6 eller nyere af buildværktøjet er installeret, da det er den tidligste version, der fungerer med JUnit 5.

Den enkleste måde er bare at køre gradle -v kommando:

$> gradle -v --------------------------------------------- --------------- Gradering 4.10.2 ------------------------------- -----------------------------

Og om nødvendigt kan vi følge installationstrinnene for at få den rigtige version.

Når vi har installeret alt, skal vi konfigurere Gradle ved hjælp af build.gradle fil.

Vi kan starte med at levere enhedstestplatformen til buildværktøjet:

test {useJUnitPlatform ()} 

Nu hvor vi har specificeret platformen, skal vi levere JUnit-afhængigheder. Det er her, vi ser en bemærkelsesværdig forskel mellem JUnit 5 og tidligere versioner.

Se, med tidligere versioner havde vi kun brug for en afhængighed. I JUnit 5 er API'en dog adskilt fra runtime, hvilket betyder to afhængigheder.

API'en er manifest med junit-jupiter-api. Kørselstiden er junit-jupiter-motor til JUnit 5 og junit-vintage-motor til JUnit 3 eller 4.

Vi leverer disse to ind testImplementering og timeRuntimeOnly, henholdsvis:

afhængigheder {testImplementation 'org.junit.jupiter: junit-jupiter-api: 5.3.1' testRuntimeOnly 'org.junit.jupiter: junit-jupiter-engine: 5.3.1'}

3. Oprettelse af test

Lad os skrive vores første test. Det ser ud som tidligere versioner:

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

Nu, vi kan køre testen ved at udføre gradle ren test kommando.

For at bekræfte, at vi bruger JUnit 5, kan vi se på importen. Importen til @Prøve og hævderLige skal have en pakke, der starter med org.junit.jupiter.api:

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

Så i det sidste eksempel oprettede vi en test med 'gammel' funktionalitet, der har fungeret i årevis. Vi opretter nu et andet eksempel, der bruger noget af den nye funktionalitet i JUnit 5:

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

hævder kaster er en ny påstand i JUnit5, der erstatter den gamle stil af @Test (forventet = ArithmeticException.class).

4. Konfiguration af JUnit 5-tests med Gradle

Dernæst vil vi undersøge en dybere integration mellem Gradle og JUnit5.

Lad os sige, at vi har to typer test i vores suite: langvarig og kortvarig. Vi kunne bruge JUnit 5 @Tag kommentar:

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

Derefter fortæller vi byggeværktøjet, hvilke der skal udføres. Lad os i vores tilfælde bare udføre de kortvarige (hurtige) tests:

test {useJUnitPlatform {includeTags 'hurtig' excludeTags 'langsom'}}

5. Aktivering af support til gamle versioner

Nu er det stadig muligt at oprette JUnit 3 og 4 test med den nye Jupiter-motor. Endnu mere kan vi blande dem med den nye version i det samme projekt, for eksempel i et migrationsscenarie.

For at starte tilføjer vi nogle afhængigheder til den eksisterende buildkonfiguration:

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

Bemærk hvordan vores projekt nu har begge dele junit-jupiter-motor såvel som junit-vintage-motor.

Nu opretter vi en ny klasse og kopier og indsæt testDivide metode, vi oprettede tidligere. Derefter tilføjer vi importen til @Prøve og hævderLige. Denne gang sørger vi dog for at bruge de gamle version 4-pakker, der starter med hvilken org.junit:

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

6. Konklusion

I denne vejledning integrerede vi Gradle med JUnit 5. Endnu mere tilføjede vi også support til version 3 og 4.

Vi har set, at byggeværktøjet giver fremragende support til de gamle og nye versioner. Derfor kan vi bruge de nye funktioner i et eksisterende projekt uden behov for at ændre alle vores eksisterende tests.

Det komplette kodeeksempel er tilgængeligt i GitHub-projektet. Brug den gerne som udgangspunkt for dit eget projekt.


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