JUnit 5 @Test Annotation

1. Oversigt

I denne artikel foretager vi en hurtig gennemgang af JUnit's @Prøve kommentar. Denne kommentar giver et kraftfuldt værktøj til udførelse af enheds- og regressionstest.

2. Maven-konfiguration

For at bruge den nyeste version af JUnit 5 skal vi tilføje følgende Maven-afhængighed:

 org.junit.jupiter junit-jupiter-engine 5.1.0 test 

Vi bruger prøve omfang, fordi vi ikke ønsker, at Maven skal medtage denne afhængighed i vores endelige build.

Da surefire-pluginet stadig ikke understøtter JUnit 5, vi bliver også nødt til at tilføje en udbyder, der fortæller Maven, hvor vores test findes:

 maven-surefire-plugin 2.19.1 org.junit.platform junit-platform-surefire-provider 1.0.2 

I vores konfiguration bruger vi surefire 2.19.1 fordi, i skrivende stund er version 2.20.x ikke kompatibel med junit-platform-surefire-udbyder.

3. Metode under test

Lad os først og fremmest bygge en enkel metode, som vi bruger i vores testscenarier til at fremvise @Prøve annotations muligheder:

public boolean isNumberEven (Integer number) {return number% 2 == 0; }

Denne metode skal vende tilbage rigtigt hvis argumentet er et lige antal og falsk Ellers. Lad os nu undersøge, om det fungerer som det skal.

4. Test af metoden

For vores eksempel vil vi specifikt kontrollere to scenarier:

  • når der gives et lige antal, skal metoden vende tilbage rigtigt
  • når der gives et ulige tal, skal metoden vende tilbage falsk

Dette betyder, at implementeringskoden vil kalde vores isNumberEven metode med forskellige parametre og kontroller, at resultatet er, hvad vi forventer.

For at testene kan blive anerkendt som sådan, tilføjer vi @Prøve kommentar. Vi kan have så mange af disse, som vi vil i en klasse, men det er en god praksis at kun sammensætte de relaterede. Bemærk også det en test må ikke være privat, den må heller ikke returnere en værdi Ellers vil det bare blive ignoreret.

I betragtning af disse overvejelser skal vi skrive vores testmetoder:

@Test ugyldigt givenEvenNumber_whenCheckingIsNumberEven_thenTrue () {boolean result = bean.isNumberEven (8); Assertions.assertTrue (resultat); } @Test ugyldigt givenOddNumber_whenCheckingIsNumberEven_thenFalse () {boolean result = bean.isNumberEven (3); Assertions.assertFalse (resultat); }

Hvis vi nu kører en Maven-bygning, surefire-pluginet gennemgår alle de kommenterede metoder i de klasser, der er placeret under src / test / java og henrette dem, der får bygningen til at mislykkes, hvis der opstår testfejl.

Hvis du kommer fra JUnit 4, Vær opmærksom på, at i denne version accepterer kommentaren ingen parametre. For at kontrollere en timeout eller en undtagelse, der blev kastet, ville vi i stedet bruge påstande:

@Test ugyldigt givenLowerThanTenNumber_whenCheckingIsNumberEven_thenResultUnderTenMillis () {Assertions.assertTimeout (Duration.ofMillis (10), () -> bean.isNumberEven (3)); } @Test ugyldigt givenNull_whenCheckingIsNumberEven_thenNullPointerException () {Assertions.assertThrows (NullPointerException.class, () -> bean.isNumberEven (null)); }

5. Konklusion

I denne hurtige vejledning viste vi, hvordan man implementerer og kører en simpel JUnit-test med @Prøve kommentar.

Mere om JUnit-rammen kan findes i dette indlæg, der giver en generel introduktion.

Al den kode, der er brugt i eksemplerne, er tilgængelig i GitHub-projektet.