JUnit 5 @Test Annotation

1. Oversikt

I denne artikkelen tar vi en rask gjennomgang av JUnit's @Test kommentar. Denne kommentaren gir et kraftig verktøy for å utføre testing av enheter og regresjoner.

2. Maven-konfigurasjon

For å bruke den nyeste versjonen av JUnit 5, må vi legge til følgende Maven-avhengighet:

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

Vi bruker test omfang fordi vi ikke vil at Maven skal inkludere denne avhengigheten i den endelige bygningen.

Siden surefire-pluginet fremdeles ikke støtter JUnit 5 naturlig, vi må også legge til en leverandør, som forteller Maven hvor du finner testene våre:

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

I vår konfigurasjon bruker vi surefire 2.19.1 fordi, i skrivende stund er versjon 2.20.x ikke kompatibel med junit-platform-surefire-provider.

3. Metode under test

Først av alt, la oss bygge en enkel metode som vi bruker i testscenariene for å vise frem @Test kommentarens evner:

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

Denne metoden skal komme tilbake ekte hvis argumentet som er sendt er et partall og falsk ellers. La oss nå sjekke ut om det fungerer slik det skal.

4. Testing av metoden

For vårt eksempel, vil vi spesifikt sjekke to scenarier:

  • når det gis et jevnt tall, skal metoden returnere ekte
  • når det gis et oddetall, skal metoden returnere falsk

Dette betyr at implementeringskoden vil kalle vår isNumberEven metode med forskjellige parametere og sjekk at resultatet er det vi forventer.

For at testene skal bli anerkjent som sådan, legger vi til @Test kommentar. Vi kan ha så mange av disse som vi vil i en klasse, men det er en god praksis å bare sette sammen de relaterte. Legg også merke til det en test må ikke være privat, det kan heller ikke returnere en verdi Ellers blir det bare ignorert.

Gitt disse hensynene, la oss skrive testmetodene våre:

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

Hvis vi nå driver en Maven-bygning, surefire plugin vil gå gjennom alle kommenterte metoder i klassene plassert under src / test / java og henrett dem, som får bygningen til å mislykkes hvis det oppstår testfeil.

Hvis du kommer fra JUnit 4, Vær oppmerksom på at merknaden ikke godtar noen parametere i denne versjonen. For å se etter en tidsavbrudd eller et unntak som er kastet, bruker vi påstander i stedet:

@Test ugyldig gittLowerThanTenNumber_whenCheckingIsNumberEven_thenResultUnderTenMillis () {Assertions.assertTimeout (Duration.ofMillis (10), () -> bean.isNumberEven (3)); } @Test ugyldig gittNull_whenCheckingIsNumberEven_thenNullPointerException () {Assertions.assertThrows (NullPointerException.class, () -> bean.isNumberEven (null)); }

5. Konklusjon

I denne raske opplæringen viste vi hvordan du implementerer og kjører en enkel JUnit-test med @Test kommentar.

Mer om JUnit-rammeverket finner du i dette innlegget som gir en generell introduksjon.

All koden som er brukt i eksemplene, er tilgjengelig i GitHub-prosjektet.


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