list junit annotations
Tento kurz vysvětluje vše o anotacích JUnit spolu s porovnáním anotací v JUnit 4 vs JUnit 5:
Naučili jsme se různé způsoby provádění testovacích případů JUnit a v našem předchozím kurzu jsme zjistili, jak vytvořit a spustit testovací sadu.
V tomto kurzu se seznámíme s prominentním aspektem JUnit, kterému se říká Anotace. Počínaje JUnit 4 jsou anotace na místě a JUnit je velmi jednoduchý, přínosnější a mnohem uživatelsky přívětivější k použití.
Anotace je Java API, které umožňuje JVM rozpoznat typ metody definované v testovací třídě. Často se používají „anotace zpětného volání životního cyklu“.
=> Navštivte zde a dozvíte se JUnit od nuly.
Co se naučíte:
Anotace JUnit - JUnit 4 vs JUnit 5
Provedení testu prochází různými fázemi životního cyklu, jak je uvedeno níže:
- Před zahájením testu je třeba provést určité aktivity při zahájení kurzu.
- Některé další činnosti, které je třeba provést před zahájením provádění testovací verze.
- Určité činnosti, které je třeba provést po provedení testu a
- Určité činnosti na konci provádění všech testů ve třídě.
Abychom se ujistili, že tyto činnosti jsou prováděny v každé fázi životního cyklu Java, je třeba zavést určité uživatelem definované metody nebo funkce, které se nazývají „ celoživotní metody zpětného volání .
Chování těchto celoživotní metody zpětného volání je určen vestavěným „ anotace zpětného volání životního cyklu '' použitý v JUnit.
Příklad: Zkusme to ještě zjednodušit tím, že tyto metody zpětného volání a poznámky k životnímu cyklu použijeme na příklad testování automatu na kávu.
- Metoda připraven (), který před zapnutím stroje zkontroluje, zda je k dispozici voda, mléko a kávová zrna.
- Další metoda startMachine (), který zapíná stroj, může do něj být zapotřebí nový nový papírový kelímek.
- Testovací skříň, která kontroluje „ Horká voda () “.
- Další testovací skříň, která kontroluje „ Cappuccino () “.
- Další testovací skříň, která kontroluje „ ExpressoCoffee () “.
- Další metoda “ throwCup () “, Který hodí použité šálky do koše.
- Metoda na úrovni třídy “ throwTrashandSwitchOff () “Hodí přebytečnou odpadní kapalinu ze zásobníku do nádrže a vypne stroj.
Ve výše uvedeném příkladu tedy následuje životní cyklus testu:
- startMachine () poběží před každou testovací verzí - Horká voda (), Cappuccino () a ExpressoCoffee () běží.
- Každá z těchto testovacích metod také postupuje podle této metody throwCup ().
- Metody připraven () a throwTrashandSwitchOff () jsou metoda na úrovni třídy, která pro třídu běží pouze jednou. Metoda připraven () běží jednou, zatímco třída iniciuje provádění. Metoda throwTrashandSwitchOff () se spustí jednou po dokončení všech testovacích případů.
Nyní vyvstává otázka, že jde pouze o pouhé metody Java:
jak otevřít příponu souboru json
- Jak budeme trvat na tom, aby JVM běžel připraven () pouze jednou na úrovni třídy a throwTrashandSwitchOff () na konci provádění třídy?
- Jak to dáme JVM vědět? startMachine () a throwCup () je třeba spustit před spuštěním každého testovacího případu a po dokončení každého provedení testovacího případu?
- Jak můžeme přimět JVM k identifikaci těchto metod Horká voda (), Cappuccino () a ExpressoCoffee () mají být testovací případy spuštěny?
Odpověď: Jedinou odpovědí na výše uvedené otázky je, že anotace zpětného volání životního cyklu dělají veškerou požadovanou magii.
(Prozatím předpokládejme, že tuto třídu vytváříme v JUnit 4)
Anotace životního cyklu - @BeforeClass, @AfterClass, @Before, @After, a @Test jsou skutečné odpovědi na výše uvedené tři otázky. Jsme si docela jisti, že po přečtení níže uvedených ukazatelů vám vyjasní anotace zpětného volání životního cyklu a jeho pracovní postup.
- Anotujte metodu připraven () s @Před hodinou a JVM to rozběhne jednou během zahájení kurzu.
- Anotujte metodu vyhodit odpad () s @Po hodině a JVM to rozběhne jednou na konci hodiny.
- Anotujte metodu startMachine () s @Před a JVM ji spustí před spuštěním každé testovací vitríny.
- Anotujte metodu throwCup () s @Po a JVM jej spustí po provedení každého testovacího případu.
- Anotujte každou z těchto metod Horká voda (), Cappuccino () a ExpressoCoffee () s @Test a JVM ví, že se jedná o základní testovací případy pro provedení třídy JUnit.
Pojďme se rychle podívat na Životní cyklus JUnit zpětného volání anotací pro JUnit 4 vs JUnit 5
JUNIT 4 ANOTACE | JUNIT 5 ANOTACE | |
---|---|---|
@RepeatedTest | 1. JUnit 5 podporuje opakované provádění testovací metody pro určitý počet opakování pomocí anotace @RepeatedTest | |
@Před | @ Předtím každý | |
@Po | @AfterEach | |
@Před hodinou | @BeforeAll | |
@Po hodině | @Po všem | |
@Test | @Test |
Sekvenční pracovní postup anotací životního cyklu
Níže je uveden postupný pracovní postup anotací životního cyklu pro JUnit 4:
- Metoda anotovaná pomocí @BeforeClass se provede jednou na začátku třídy.
- Metoda anotovaná pomocí @Before se spustí před zahájením Testcase 1.
- Metoda Testcase1 anotovaná pomocí @Test je testcase ve třídě.
- Metoda anotovaná pomocí @After běží po dokončení případu Testcase 1.
- Metoda anotovaná pomocí @Before se spustí před začátkem Testcase 2.
- Metoda Testcase2 anotovaná pomocí @Test je testcase ve třídě.
- Metoda anotovaná pomocí @After se spustí poté, co Testcase 2 dokončí provádění.
- Metoda s poznámkou @AfterClass se provede jednou na konci třídy po provedení obou testcase 1 a 2.
Sekvenční pracovní postup anotací životního cyklu pro JUnit 5 je následující:
- Metoda anotovaná pomocí @BeforeAll se provede jednou na začátku třídy.
- Metoda anotovaná pomocí @BeforeEach se spustí před zahájením Testcase 1.
- Metoda Testcase1 anotovaná pomocí @Test je testcase ve třídě.
- Metoda anotovaná pomocí @AfterEach běží po dokončení případu Testcase 1.
- Metoda anotovaná pomocí @BeforeEach se spustí před zahájením Testcase 2.
- Metoda Testcase2 anotovaná pomocí @Test je testcase ve třídě.
- Metoda anotovaná pomocí @AfterEach běží po dokončení případu Testcase 2.
- Metoda s poznámkou @AfterAll se provede jednou na konci třídy po provedení obou testcase 1 a 2.
Vypracování každé anotace
V této části se pojďme hlouběji ponořit a podrobně porozumět tomu, co každý z životních cyklů nazývá anotace:
@ Před (JUnit 4) / @ BeforeEach (JUnit 5):
- Anotovaná metoda se provede před provedením každé testovací metody v testovací třídě.
- Tuto anotaci lze použít, pokud si přejete mít prostředky nebo data testu nastavena těsně před zahájením každého testu.
- Například, pokud je v testovací třídě JUnit 5 Testcases, pak se metoda komentovaná pomocí @ Before / @ BeforeEach provede 5krát před provedením každého z testovacích případů.
@ After (JUnit 4) / @ AfterEach (JUnit 5):
- Anotovaná metoda se provede po provedení každé testovací metody v testovací třídě.
- Tuto anotaci lze použít, pokud chcete uvolnit použité prostředky nebo testovací data po spuštění každého testovacího případu.
- Například, pokud je v testovací třídě JUnit 5 testcases, pak se metoda anotovaná pomocí @ After / @ AfterEach provede 5krát po provedení testovacích případů.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5):
- Anotovaná metoda se provede před provedením všech testovacích metod v testovací třídě.
- Tuto anotaci lze použít, pokud chcete nastavit prostředky nebo otestovat data na úrovni třídy.
- Protože tato metoda je anotována pomocí @ BeforeClass / @ BeforeAll je pro testovací třídu spuštěna pouze jednou a kopie metody je sdílena napříč třídou a musí být uvedena metoda statický.
- Například, pokud je v testovací třídě JUnit 5 testcases, pak metoda anotovaná pomocí @ BeforeClass / @ BeforeAll provede jednou za testovací třídu před zahájením kteréhokoli testcase.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- Anotovaná metoda se provede po provedení všech testovacích metod v testovací třídě.
- Tuto anotaci lze použít, pokud chcete uvolnit použité prostředky nebo otestovat data na úrovni třídy.
- Protože tato metoda je anotována pomocí @ AfterClass / @ AfterAll je pro testovací třídu spuštěna pouze jednou a kopie metody je sdílena napříč třídou, musí být metoda uvedena statický.
- Například, pokud je v testovací třídě JUnit 5 Testcases, pak metoda anotovaná pomocí @ AfterClass / @ AfterAll provede jednou za testovací třídu po dokončení všech testovacích případů.
@Test (JUnit 4 & JUnit 5):
- Anotace @Test je společná pro JUnit 4 i JUnit 5. Anotované metody představují testovací případy ve třídě.
- Ve třídě JUnit může být více metod, každá s anotací pomocí @Test. To znamená, že třída může mít několik testovacích případů.
- K otestování existují různé atributy nebo parametry, které lze předat. Můžete přidat vynucený časový limit pro testovací případ nebo přidat výjimku. To bude podrobně popsáno v samostatném kurzu.
- Anotovaná metoda nemůže být soukromá ani statická a nemůže vrátit žádnou hodnotu.
- Metoda @Test musí být v JUnit 4 deklarována jako veřejná, zatímco Junit 5 umožňuje testovací případ definovaný bez modifikátoru přístupu „public“, protože ve výchozím nastavení považuje „no access modifier“ za „public“.
Základní příklad testu JUNIT
Základní JUNIT 4 příklad anotací @BeforeClass, @Before, @Test, @After a @AfterClass byl ukázán prostřednictvím kódu s vysvětlením v našem dřívějším tutoriálu „Testovací přípravky“.
Podívejme se na základní JUnit 5 Program pro demonstraci fungování anotací Lifecycle call-back @BeforeAll, @BeforeEach, @Test, @AfterEach a @AfterAll.
Kód pro JUnit5Program.java:
public class JUnit5Program { @BeforeAll public static void preClass() { System.out.println('@BeforeAll – the annotated method runs once before all other methods execute'); } @BeforeEach public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('@BeforeEach – the annotated method executes before each test '); } @Test public void test_JUnit1() { System.out.println('@Test – this is test case 1'); } @Test public void test_JUnit2() { System.out.println('@Test – this is test case 2'); } @Test public void test_JUnit3() { System.out.println('@Test – this is test case 3'); } @AfterEach public void tearDown() { System.out.println('@AfterEach – the annotated method executes after each test executes'); System.out.println('_______________________________________________________
'); } @AfterAll public static void postClass() { System.out.println('@AfterAll – the annotated method runs once after all other methods execute'); } }
Při spuštění souboru třídy se v okně konzoly zobrazí níže uvedený výsledek.
Další poznámky - JUnit 4 vs JUnit 5
Existuje mnoho dalších poznámek, které se používají pro konkrétní účely. Uvidíme stručně seznam anotací pro JUnit 4 vs JUnit 5 a účel, kterému slouží.
Ke každé z těchto anotací bude v našich připravovaných výukách podrobný návod.
JUNIT 4 ANOTACE | JUNIT 5 ANOTACE | Stručný popis |
---|---|---|
@FixMethodOrder | @TestMethodOrder & @Order | 1. Tyto anotace umožňují uživateli zvolit pořadí provádění metod v testovací třídě |
@Rule & @ClassRule | @ExtendWith | 1. @Rule - Anotace je rozšířena o třídu TestRule, která pomáhá aplikovat určitá pravidla na testovací případy. 2. Například: vytvoření dočasné složky před provedením testovacího případu a odstranění složky po spuštění lze nastavit pomocí pravidla. 3. @Rule je k dispozici pouze v JUnit 4, který lze použít v JUnit 5 Vintage, @ExtendWith však poskytuje bližší funkci pro JUnit 5 4. Podobně lze globální časový limit nastavit pomocí @Rule. |
NA | @TestFactory | 1. Tato anotace je podporována pouze JUnit 5 a pomáhá vytvářet dynamické nebo běhové testy. 2. Vrací proud dat jako sběr a nemůže používat anotace zpětného volání životního cyklu |
NA | @ Vnořené | 1. Tuto anotaci podporuje pouze JUnit Jupiter 2. Pomáhá nám vytvářet vnořené testovací případy. 3. Například Class 1 with testcase 1 might have a @Nested Class 2 with testcase 2. This makes testcase 2 a nested testcase to testcase 1. Proto, testcase 1 executes, then testcase 2 executes. 4. Pokud se nepoužije anotace @Nested, vnořená třída se nespustí. |
@Kategorie | @Štítek | 1. Tato anotace pomáhá při označování a filtrování testů 2. Můžete zahrnout testy pro provedení nebo je vyloučit filtrováním podle kategorií, do kterých spadají. |
@RunWith (Parameterized.class) @ Parametrizováno. Parametry | @ParameterizedTest a @ValueSource | 1. Tato anotace se používá ke spuštění metody s variantami testovacích dat několikrát. 2. JUnit 4 podporuje @RunWith a @Parameters, zatímco JUnit 5 Jupiter podporuje @ParameterizedTest s @ValueSource |
@DisplayName | 1. Uživatelem definovaný název lze pro účely zobrazení dát testovací metodě nebo třídě. | |
@TestInstance (LifeCycle.PER_CLASS) a @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5 podporuje konfiguraci životního cyklu testů. 2. Jak JUnit 4, tak 5 dodržují výchozí zpětné volání pro každou metodu životního cyklu, zatímco lze provést i konfiguraci pro každou třídu. |
Reference => JUnit 4 , JUnit 5
Závěr
- Dozvěděli jsme se o anotacích zpětného volání životního cyklu a sekvenčním pracovním toku, ve kterém se testovací metody provádějí na základě jejich anotací.
- Naučili jsme se poznámky použité pro JUnit 4 a poznámky pro JUnit 5.
- Dozvěděli jsme se také o dalších anotacích, které JUnit 4 podporuje, a těch, které podporují pouze JUnit 5.
=> Dávejte pozor na jednoduchou tréninkovou sérii JUnit zde.
Doporučené čtení
- Co je testovací přípravek JUnit: Výukový program s příklady JUnit 4
- Testy JUnit: Jak psát testovací případy JUnit s příklady
- Výukový program JUnit pro začátečníky - Co je to testování JUnit
- Stahujte, instalujte a konfigurujte JUnit v Eclipse
- Několik způsobů provádění testů JUnit
- Úvod do rámce JUnit a jeho použití v Selenium Script - Selenium Tutorial # 11
- Skrytý seznam do pole a další sbírky v Javě
- Metody seznamu Java - Řazení seznamu, Obsahuje, Přidat seznam, Seznam odebrat