list junit annotations
Ta vadnica pojasnjuje vse o pripisih JUnit skupaj s primerjavo pripisov v JUnit 4 proti JUnit 5:
Spoznali smo različne načine izvajanja testnih primerov JUnit in videli, kako ustvariti in izvršiti testni paket v naši prejšnji vadnici.
V tej vadnici bomo spoznali pomemben vidik JUnit, ki se imenuje Pripisi. Od JUnit 4 so pripisi na mestu in omogočajo JUnit zelo preprost, bolj koristen in uporabniku prijaznejši za uporabo.
Pripisi je Java API, ki JVM omogoča prepoznavanje vrste metode, definirane v testnem razredu. Pogosto se uporabljajo 'opombe o povratnih klicih'.
=> Obiščite tukaj, če se želite naučiti JUnit iz nič.
Kaj se boste naučili:
Pripisi JUnit - JUnit 4 proti JUnit 5
Izvajanje testa poteka skozi različne faze življenjskega cikla, kot je navedeno spodaj:
- Pred začetkom preizkusa je treba na začetku predavanja izvesti nekatere dejavnosti.
- Nekatere druge dejavnosti, ki jih je treba izvesti pred začetkom izvajanja testnega primera.
- Nekatere dejavnosti, ki jih je treba opraviti po izvedbi testa in
- Določene dejavnosti na koncu izvajanja vseh testov v razredu.
Da bi lahko ugotovili, ali se te dejavnosti izvajajo v vseh fazah življenjskega cikla Java, morajo obstajati določene uporabniško določene metode ali funkcije, imenovane „ metode povratnega klica v življenjskem ciklu .
Obnašanje teh metode povratnega klica v življenjskem ciklu določa vgrajena „ pripise o povratnem klicu v življenjskem ciklu ' uporablja v JUnit.
Primer: Poskusimo to poenostaviti, tako da te metode povratnih klicev in opombe v življenjskem ciklu povežemo s primerom preizkušanje avtomata za kavo.
- Metoda machineReady (), ki preverja, ali so pred vklopom stroja na voljo voda, mleko in kavna zrna.
- Druga metoda startMachine (), ki vklopi napravo, v napravo morda postavi novo papirnato skodelico.
- Primer, ki preverja „ HotWater () ’.
- Še en testni primer, ki preverja „ Kapučino () ’.
- Še en testni primer, ki preverja „ ExpressoCoffee () ’.
- Druga metoda “ throwCup () ', Ki uporabljene skodelice vrže v koš.
- Metoda na ravni razreda “ throwTrashandSwitchOff () ”Vrže prelivno odpadno tekočino s pladnja v bazen in izklopi stroj.
Torej, v zgornjem primeru je tukaj, kako sledi življenjski cikel testa:
- startMachine () se bo izvajal pred vsakim testnim primerom - HotWater (), Kapučino () in ExpressoCoffee () teče.
- Vsak od teh primerov tudi sledi metodi throwCup ().
- Metode machineReady () in throwTrashandSwitchOff () so metode na ravni razreda, ki se za razred izvajajo samo enkrat. Metoda machineReady () teče enkrat, medtem ko razred sproži izvajanje. Metoda throwTrashandSwitchOff () se zažene enkrat po zaključku vseh testnih primerov.
Zdaj se postavlja vprašanje, potem gre zgolj za metode Java:
kaj storiti z datotekami .torrent
- Kako bomo vztrajali, da JVM kandidira machineReady () samo enkrat na razredni stopnji in throwTrashandSwitchOff () na koncu izvedbe predavanja?
- Kako bomo JVM to vedeli startMachine () in throwCup () je treba zagnati pred zagonom vsakega testnega primera oziroma po zaključku vsakega testnega primera?
- Kako lahko naredimo, da JVM prepozna metode HotWater (), Kapučino () in ExpressoCoffee () ali je treba izvajati testne primere?
Odgovor: Edini odgovor na zgornja vprašanja je, da pripisi za povratni klic v življenjskem ciklu naredijo vso potrebno čarovnijo.
(Za zdaj predpostavimo, da ta razred ustvarjamo v JUnit 4)
Pripisi o življenjskem ciklu - @BeforeClass, @AfterClass, @Before, @After, in @Test so resnični odgovori na zgornja tri vprašanja. Prepričani smo, da boste po branju spodnjih napotkov razjasnili pripise o povratnem klicu v življenjskem ciklu in njegov potek dela.
- Označite metodo machineReady () z @BeforeClass in JVM bo omogočil, da se bo med zagonom tekel enkrat.
- Označite metodo throwTrash () z @Po pouku in JVM bo poskrbel, da se bo zagnal enkrat na koncu predavanja.
- Označite metodo startMachine () z @ Pred tem in JVM jo bo zagnal pred vsakim testnim primerom.
- Označite metodo throwCup () z @ Potem in JVM jo bo zagnal po izvedbi vsakega testnega primera.
- Označite vsako od teh metod HotWater (), Kapučino () in ExpressoCoffee () z @Test in JVM ve, da so to osrednji testni primeri za izvedbo razreda JUnit.
Hitro si oglejmo Obvestila o povratnem klicu JUnit za JUnit 4 v primerjavi z JUnit 5
OBJAVA 4. JUNITA | OBJAVA 5. JUNITA | |
---|---|---|
@RepeatedTest | 1. Jun 5 podpira določeno število ponovitev izvajanja preskusne metode s pripisom @RepeatedTest | |
@ Pred tem | @BeforeEach | |
@ Potem | @AfterEach | |
@BeforeClass | @BeforeAll | |
@Po pouku | @Konec koncev | |
@Test | @Test |
Zaporedni potek pripisov življenjskega cikla
Spodaj je zaporedni potek pripisov življenjskega cikla za JUnit 4:
- Metoda, označena z @BeforeClass, se izvede enkrat na začetku razreda.
- Metoda, označena z @Before, se izvede pred začetkom Testcase 1.
- Metoda Testcase1, označena z @Test, je test primera v razredu.
- Metoda, označena z @After se zažene, ko Testcase 1 zaključi izvajanje.
- Metoda, označena z @Before, se izvede pred začetkom Testcase 2.
- Metoda Testcase2, označena z @Test, je test primera v razredu.
- Metoda, označena z @After se zažene po zaključku Testcase 2.
- Metoda, označena z @AfterClass, se izvede enkrat na koncu razreda po izvedbi testnega primera 1 in 2.
Zaporedni potek pripisov življenjskega cikla za JUnit 5 je naslednji:
- Metoda, označena z @BeforeAll, se izvede enkrat na začetku predavanja.
- Metoda, označena z @BeforeEach, se izvede pred začetkom preizkusa 1.
- Metoda Testcase1, označena z @Test, je test primera v razredu.
- Metoda, označena z @AfterEach, se zažene po zaključku preizkusa 1.
- Metoda, označena z @BeforeEach, se izvede pred začetkom Testcase 2.
- Metoda Testcase2, označena z @Test, je test primera v razredu.
- Metoda, označena z @AfterEach, se zažene po zaključku Testcase 2.
- Metoda, označena z @AfterAll, se izvede enkrat na koncu razreda po izvedbi testnega primera 1 in 2.
Obdelava vsakega pripisa
V tem poglavju se poglobimo in natančno razumemo, kaj počne vsak od življenjskih ciklov klic nazaj:
@Before (JUnit 4) / @ BeforeEach (JUnit 5):
- Označena metoda se izvede pred izvajanjem vsake preskusne metode v testnem razredu.
- Ta pripis lahko uporabite, če želite, da se viri ali podatki o preskusu nastavijo tik pred začetkom vsakega preizkusa.
- Na primer, če je v testnem razredu JUnit 5 testnih primerov, se metoda, označena z @ Before / @ BeforeEach, izvede petkrat pred izvedbo vsakega testnega primera.
@After (JUnit 4) / @ AfterEach (JUnit 5):
- Označena metoda se izvede po izvedbi vsake preskusne metode v preskusnem razredu.
- Ta pripis lahko uporabite, kadar želite po vsakem zagonu preizkusnega primera sprostiti uporabljene vire ali preskusne podatke.
- Na primer, če je v testnem razredu JUnit 5 testnih primerov, se metoda, označena z @ After / @ AfterEach, izvede 5-krat po izvedbi testnih primerov.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5):
- Označena metoda se izvede, preden se izvedejo vse testne metode v preskusnem razredu.
- Ta pripis lahko uporabite, kadar želite nastaviti vire ali preskusne podatke na ravni predavanja.
- Ker je ta metoda označena z @ BeforeClass / @ BeforeAll se izvede samo enkrat za testni razred in kopija metode se deli v razredu, zato mora biti navedena metoda statična.
- Na primer, če je v testnem razredu JUnit 5 testnih primerov, se metoda, označena z @ BeforeClass / @ BeforeAll, izvede enkrat na preskusni razred, preden se začne kateri koli testni primer.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- Označena metoda se izvede po izvedbi vseh preskusnih metod v preskusnem razredu.
- Ta pripis lahko uporabite, kadar želite uporabljene vire ali preskusne podatke objaviti na ravni razreda.
- Ker je ta metoda označena z @ AfterClass / @ AfterAll se za preskusni razred izvede le enkrat in kopija metode postane skupna razredu, je treba navesti metodo statično.
- Na primer, če je v preskusnem razredu JUnit 5 testnih primerov, se metoda, označena z @ AfterClass / @ AfterAll, izvede enkrat na preizkusni razred po zaključku vseh testnih primerov.
@Test (JUnit 4 & JUnit 5):
- Pripis @Test je skupen tako za JUnit 4 kot tudi za JUnit 5. Označene metode predstavljajo testne primere v razredu.
- V razredu JUnit je lahko več metod, ki so označene z @Test. To pomeni, da ima lahko razred več testnih primerov.
- Obstajajo različni atributi ali parametri za preizkušanje, katerega lahko prenesete. Za preskusni primer lahko dodate prisilno časovno omejitev ali izjemo. To bo podrobno opisano v ločeni vadnici.
- Označena metoda ne more biti zasebna ali statična in ne more vrniti nobene vrednosti.
- Metoda @Test mora biti v JUnit 4 razglašena za javno, medtem ko Junit 5 omogoča testno primer, definiran brez modifikatorja dostopa 'public', saj privzeto šteje, da 'noben modifikator dostopa' ni javni.
Osnovni primer preskusa JUNIT
Osnovno JUNIT 4 primer za opombe @BeforeClass, @Before, @Test, @After in @AfterClass je bil prikazan skozi kodo s svojo razlago v naši prejšnji vadnici o 'Test Fixtures'.
Poglejmo si osnovno JUNIT 5 Program za predstavitev delovanja pripisov povratnega klica v življenjskem ciklu @BeforeAll, @BeforeEach, @Test, @AfterEach in @AfterAll.
Koda za 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'); } }
Ob izvedbi datoteke razreda se v oknu konzole prikaže spodnji rezultat.
Dodatni komentarji - JUnit 4 proti JUnit 5
Obstaja veliko dodatnih pripisov, ki se uporabljajo za posebne namene. Videli bomo seznam pripisov za JUnit 4 proti JUnit 5 in namen, ki mu služi na kratko.
V naslednjih vajah boste našli podrobne vadnice o teh opombah.
OBJAVA 4. JUNITA | OBJAVA 5. JUNITA | Opis na kratko |
---|---|---|
@FixMethodOrder | @TestMethodOrder & @Order | 1. Ti pripisi omogočajo uporabniku, da izbere vrstni red izvajanja metod v preskusnem razredu |
@Rule & @ClassRule | @ExtendWith | 1. @Rule - Pripis je razširjen iz razreda TestRule, ki pomaga uporabiti določena pravila za testne primere. 2. Na primer: ustvarjanje začasne mape pred izvajanjem testnega primera in brisanje mape po izvedbi lahko nastavite s pravilom. 3. @Rule je na voljo samo v JUnit 4, ki ga je mogoče uporabiti v JUnit 5 Vintage, vendar @ExtendWith ponuja podrobnejšo funkcijo za JUnit 5 4. Podobno lahko s pomočjo @Rule nastavite globalno časovno omejitev. |
NA | @TestFactory | 1. Ta pripis podpira samo JUnit 5 in pomaga pri ustvarjanju dinamičnih preskusov ali preskusov med izvajanjem. 2. Vrne tok podatkov kot zbiranje in ne more uporabljati pripisov povratnega klica v življenjskem ciklu |
NA | @Nastavljeno | 1. Ta pripis podpira samo JUnit Jupiter 2. Pomaga nam ustvariti ugnezdene testne primere. 3. Na primer, razred 1 s testnim primerom 1 ima lahko gnezdeni razred 2 s testnim primerom 2. Zaradi tega testcase 2 postane ugnezdeni testni primerek za testni primer 1. Torej se testcase 1 izvede, nato se testcase 2 izvede. 4. Če se pripomba @Nested ne uporablja, se ugnezdeni razred ne bo zagnal. |
@Kategorija | @Oznaka | 1. Ta pripis pomaga pri označevanju in filtriranju testov 2. Lahko vključite teste za izvedbo ali jih izključite s filtriranjem glede na kategorije, v katere spadajo. |
@RunWith (Parameterized.class) @ Parameterized.Parameters | @ParameterizedTest in @ValueSource | 1. Ta pripis se uporablja za večkratno izvajanje metode s različicami testnih podatkov. 2. JUnit 4 podpira @RunWith in @Parameters, medtem ko JUnit 5 Jupiter podpira @ParameterizedTest z @ValueSource |
@DisplayName | 1. Uporabniško določeno ime je mogoče preskusni metodi ali razredu nameniti za prikaz. | |
@TestInstance (LifeCycle.PER_CLASS) in @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5 podpira konfiguracijo življenjskega cikla testov. 2. Tako JUnit 4 kot 5 upoštevata privzeti povratni klic v življenjskem ciklu metode, medtem ko je mogoče izvesti tudi konfiguracijo za posamezne razrede. |
Reference => JUNIT 4 , JUNIT 5
Zaključek
- Spoznali smo pripise povratnega klica v življenjskem ciklu in zaporedni potek dela, v katerem se testne metode izvajajo na podlagi njihovih pripisov.
- Spoznali smo opombe, uporabljene za JUnit 4, in opombe za JUnit 5.
- Spoznali smo tudi dodatne opombe, ki jih podpira JUnit 4, in tiste, ki podpirajo samo JUnit 5.
=> Tukaj bodite pozorni na preprosto serijo JUnit Training.
Priporočeno branje
- Kaj je preskusna naprava JUnit: Vadnica s primeri JUnit 4
- JUnit testi: Kako napisati primere testov JUnit s primeri
- Vadnica JUnit za začetnike - kaj je testiranje JUnit
- Prenesite, namestite in konfigurirajte JUnit v Eclipse
- Več načinov za izvajanje preskusov JUnit
- Uvod v JUnit Framework in njegovo uporabo v skriptu selena - Vadnica za selen # 11
- Prikriti seznam v matriko in druge zbirke v Javi
- Metode seznama Java - Razvrsti seznam, Vsebuje, Dodaj, Dodaj, Odstrani