JUnit 5 @Test Annotation
1. Prehľad
V tomto článku urobíme rýchlu kontrolu JUnit @Test anotácia. Táto anotácia poskytuje výkonný nástroj na vykonávanie jednotkových a regresných testov.
2. Konfigurácia Maven
Ak chcete používať najnovšiu verziu JUnit 5, budeme musieť pridať nasledujúcu závislosť Maven:
org.junit.jupiter test junit-jupiter-engine 5.1.0
Používame test rozsah, pretože nechceme, aby Maven zahrnul túto závislosť do nášho konečného zostavenia.
Pretože doplnok surefire stále natívne úplne nepodporuje JUnit 5, budeme tiež musieť pridať poskytovateľa, ktorá informuje Maven, kde nájsť naše testy:
maven-surefire-plugin 2.19.1 org.junit.platform junit-platform-surefire-provider 1.0.2
V našej konfigurácii použijeme surefire 2.19.1, pretože v čase písania tohto článku nie je verzia 2.20.x kompatibilná s poskytovateľ junit-platform-surefire.
3. Testovaná metóda
Najskôr si poďme vytvoriť jednoduchú metódu, ktorú použijeme v našich testovacích scenároch na prezentáciu @Test možnosti anotácie:
public boolean isNumberEven (Integer number) {return number% 2 == 0; }
Táto metóda by sa mala vrátiť pravda ak je zadaný argument párne číslo a nepravdivé inak. Teraz sa pozrime, či to funguje tak, ako má.
4. Testovanie metódy
Pre náš príklad chceme konkrétne skontrolovať dva scenáre:
- ak dostane párne číslo, metóda by sa mala vrátiť pravda
- ak dostane nepárne číslo, metóda by sa mala vrátiť nepravdivé
To znamená, že implementačný kód bude nazývať náš isNumberEven metóda s rôznymi parametrami a skontrolujte, či je výsledok taký, aký očakávame.
Aby sme testy ako také rozpoznali, pridáme @Test anotácia. V triede ich môžeme mať toľko, koľko chceme, ale je dobrým zvykom dávať dokopy iba súvisiace. Všimnite si tiež, že test nesmie byť súkromné, ani nemôže vrátiť hodnotu —Inak to bude len ignorované.
Na základe týchto úvah napíšme naše testovacie metódy:
@Test void givenEvenNumber_whenCheckingIsNumberEven_thenTrue () {boolean result = bean.isNumberEven (8); Assertions.assertTrue (výsledok); } @Test void givenOddNumber_whenCheckingIsNumberEven_thenFalse () {boolean result = bean.isNumberEven (3); Assertions.assertFalse (výsledok); }
Ak teraz spustíme zostavu Maven, doplnok surefire prejde všetkými anotovanými metódami v triedach umiestnených pod src / test / java a popraviť ich, čo spôsobí zlyhanie zostavenia, ak dôjde k zlyhaniu testu.
Ak pochádzate z JUnit 4, Upozorňujeme, že v tejto verzii anotácia neakceptuje žiadne parametre. Na kontrolu časového limitu alebo vyvolanej výnimky by sme namiesto toho použili tvrdenia:
@Test void givenLowerThanTenNumber_whenCheckingIsNumberEven_thenResultUnderTenMillis () {Assertions.assertTimeout (Duration.ofMillis (10), () -> bean.isNumberEven (3)); } @Test void givenNull_whenCheckingIsNumberEven_thenNullPointerException () {Assertions.assertThrows (NullPointerException.class, () -> bean.isNumberEven (null)); }
5. Záver
V tomto rýchlom výučbe sme si ukázali, ako implementovať a spustiť jednoduchý test JUnit s @Test anotácia.
Viac o rámci JUnit nájdete v tomto príspevku, ktorý poskytuje všeobecný úvod.
Celý kód použitý v príkladoch je k dispozícii v projekte GitHub.