JUnit 5 @ Test annotatie

1. Overzicht

In dit artikel zullen we JUnit's kort bespreken @Test annotatie. Deze annotatie biedt een krachtig hulpmiddel voor het uitvoeren van unit- en regressietests.

2. Maven-configuratie

Om de nieuwste versie van JUnit 5 te gebruiken, moeten we de volgende Maven-afhankelijkheid toevoegen:

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

Wij gebruiken de test scope omdat we niet willen dat Maven deze afhankelijkheid opneemt in onze uiteindelijke build.

Omdat de trefzekere plug-in JUnit 5 nog steeds niet volledig ondersteunt, we moeten ook een provider toevoegen, die Maven vertelt waar hij onze tests kan vinden:

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

In onze configuratie gebruiken we trefzekere 2.19.1 omdat, op het moment van schrijven is versie 2.20.x niet compatibel met het junit-platform-trefzekere-provider.

3. Methode wordt getest

Laten we eerst een eenvoudige methode bouwen die we in onze testscenario's zullen gebruiken om het @Test annotatie mogelijkheden:

openbare boolean isNumberEven (geheel getal) {retournummer% 2 == 0; }

Deze methode zou moeten terugkeren waar als het doorgegeven argument een even getal is en false anders. Laten we nu eens kijken of het werkt zoals het hoort.

4. Het testen van de methode

Voor ons voorbeeld willen we specifiek twee scenario's controleren:

  • wanneer een even getal wordt gegeven, zou de methode moeten terugkeren waar
  • wanneer een oneven getal wordt gegeven, zou de methode moeten terugkeren false

Dit betekent dat de implementatiecode ons zal bellen isNumberEven methode met verschillende parameters en controleer of het resultaat is wat we verwachten.

Om ervoor te zorgen dat de tests als zodanig worden herkend, voegen we de @Test annotatie. We kunnen er zoveel van hebben als we willen in een klas, maar het is een goede gewoonte om alleen de gerelateerde samen te stellen. Merk ook dat op een test mag dat niet zijn privaat, noch mag het een waarde teruggeven - anders wordt het gewoon genegeerd.

Laten we gezien deze overwegingen onze testmethoden schrijven:

@Test ongeldig gegevenEvenNumber_whenCheckingIsNumberEven_thenTrue () {booleaans resultaat = bean.isNumberEven (8); Assertions.assertTrue (resultaat); } @Test ongeldig gegevenOddNumber_whenCheckingIsNumberEven_thenFalse () {booleaans resultaat = bean.isNumberEven (3); Assertions.assertFalse (resultaat); }

Als we nu een Maven-build uitvoeren, de trefzekere plug-in doorloopt alle geannoteerde methoden in de klassen die onder zijn geplaatst src / test / java en voer ze uit, waardoor de build mislukt als er testfouten optreden.

Als je uit JUnit 4 komt, Houd er rekening mee dat in deze versie de annotatie geen parameters accepteert. Om te controleren of er een time-out of een gegenereerde uitzondering is, gebruiken we in plaats daarvan beweringen:

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

5. Conclusie

In deze korte zelfstudie hebben we laten zien hoe u een eenvoudige JUnit-test implementeert en uitvoert met de @Test annotatie.

Meer over het JUnit-framework is te vinden in dit bericht, dat een algemene inleiding biedt.

Alle code die in de voorbeelden wordt gebruikt, is beschikbaar in het GitHub-project.