list junit annotations
Ovaj vodič objašnjava sve o JUnit bilješkama, zajedno s usporedbom napomena u JUnit 4 u odnosu na JUnit 5:
Naučili smo različite načine izvršavanja testnih slučajeva JUnit i vidjeli smo kako stvoriti i izvršiti testni paket u našem prethodnom vodiču.
U ovom uputstvu upoznat ćemo istaknuti aspekt JUnit-a koji se zove Bilješke. Počevši od JUnit-a 4, bilješke su na mjestu i čine JUnit vrlo jednostavnim, korisnijim i mnogo jednostavnijim za upotrebu.
Bilješke je Java API koji JVM-u omogućuje prepoznavanje vrste metode definirane u testnoj klasi. Postoje često korištene 'bilješke o povratnom pozivu za život'.
=> Posjetite ovdje da biste naučili JUNITET iz početka.
Što ćete naučiti:
Bilješke o JUnit - JUNIT 4 vs JUNIT 5
Izvršenje testa prolazi kroz različite faze životnog ciklusa kako je navedeno u nastavku:
- Prije započinjanja testa, postoje određene aktivnosti koje treba obaviti na početku predavanja.
- Određene druge aktivnosti koje treba obaviti prije nego što test test započne s izvršavanjem.
- Određene aktivnosti koje je potrebno izvršiti nakon izvršenja testa i
- Određene aktivnosti na kraju izvođenja svih testova u klasi.
Da bi se utvrdilo da li se ove aktivnosti izvode tijekom svake faze životnog ciklusa Java, moraju postojati određene korisnički definirane metode ili funkcije nazvane „ metode povratnog poziva u životnom ciklusu .
Ponašanje ovih metode povratnog poziva u životnom ciklusu određuje ugrađeni ' napomene o povratnom pozivu u životnom ciklusu ' koristi se u JUnit-u.
Primjer: Pokušajmo to učiniti još jednostavnijim povezivanjem ovih metoda povratnog poziva i bilješki u životnom ciklusu s primjerom testiranje automata za kavu.
- Metoda strojSpremno () koji provjerava jesu li dostupni voda, mlijeko i zrna kave prije nego što se stroj uključi.
- Druga metoda startMachine () koji uključuje uređaj, u njega će možda trebati nova svježa papirnata čaša.
- Kutija koja provjerava ' Vruća voda () ’Opcija.
- Još jedan test koji provjerava ' Cappuccino () ’Opcija.
- Još jedan test koji provjerava ' ExpressoCoffee () ’Opcija.
- Druga metoda “ throwCup () ”Koji baca korištene šalice u kantu.
- Metoda na razini klase “ throwTrashandSwitchOff () ”Baca prelivenu otpadnu tekućinu iz ladice u bazen i isključuje stroj.
Dakle, u gornjem primjeru, evo kako slijedi životni ciklus testa:
- startMachine () pokrenut će se prije svakog testcasea - Vruća voda (), Cappuccino () i ExpressoCoffee () radi.
- Svaki od ovih primjera također slijedi metodu throwCup ().
- Metode strojSpremno () i throwTrashandSwitchOff () su metoda na razini klase koja se izvodi samo jednom za klasu. Način strojSpremno () izvodi se jednom dok klasa započinje izvršenje. Način throwTrashandSwitchOff () pokreće se jednom nakon završetka svih testnih slučajeva.
Postavlja se pitanje, to su samo puke Java metode, a zatim:
testirajte svoju web stranicu u različitim preglednicima
- Kako ćemo inzistirati da se JVM kandidira strojSpremno () samo jednom na razini razreda i throwTrashandSwitchOff () na kraju izvršenja klase?
- Kako ćemo to obavijestiti JVM startMachine () i throwCup () treba pokrenuti prije pokretanja svakog testcase-a, odnosno nakon završetka svakog testcase-a?
- Kako možemo natjerati JVM da identificira te metode Vruća voda (), Cappuccino () i ExpressoCoffee () trebaju li se provoditi test slučajevi?
Odgovor: Jedini odgovor na gornja pitanja je da bilješke povratnog poziva životnog ciklusa čine svu potrebnu magiju.
(Za sada pretpostavimo da ovu klasu stvaramo u JUnit 4)
Bilješke o životnom ciklusu - @BeforeClass, @AfterClass, @Before, @After, i @Test stvarni su odgovori na gornja tri pitanja. Prilično smo sigurni da ćete nakon čitanja uputa u nastavku dobiti jasne napomene o povratnom pozivu životnog ciklusa i njegov tijek rada.
- Označite metodu strojSpremno () sa @BeforeClass a JVM će pokrenuti jedanput tijekom početka nastave.
- Označite metodu baci smeće () sa @Nakon nastave a JVM će ga pokrenuti jednom na kraju predavanja.
- Označite metodu startMachine () sa @Prije i JVM će ga pokrenuti prije pokretanja svakog testcasea.
- Označite metodu throwCup () sa @Nakon a JVM će ga pokrenuti nakon izvršenja svakog test slučaja.
- Označite svaku od ovih metoda Vruća voda (), Cappuccino () i ExpressoCoffee () sa @Test i JVM zna da su ovo jezgri test slučajeva za klasu JUnit koje treba izvršiti.
Dopustite nam da brzo pogledamo Bilješke o povratnom pozivu za životni ciklus JUnit-a za JUnit 4 u odnosu na JUnit 5
| NAPOMENA 4. LIPNJA | 5. LIPNJA BILJEŠKE | |
|---|---|---|
| @RepeatedTest | 1.Junit 5 podržava ponavljano izvršavanje metode ispitivanja određeni broj puta pomoću bilješke @RepeatedTest | |
| @Prije | @BeforeEach | |
| @Nakon | @AfterEach | |
| @BeforeClass | @BeforeAll | |
| @Nakon nastave | @Nakon svega | |
| @Test | @Test |
Sekvencijalni tijek bilješki životnog ciklusa
Dolje je dan sekvencijalni tijek napomena životnog ciklusa za JUnit 4:

- Metoda označena s @BeforeClass izvršava se jednom na početku klase.
- Metoda označena s @Before izvršava se prije početka Testcase 1.
- Metoda Testcase1 označena sa @Test je testcase u klasi.
- Metoda označena s @After se izvodi nakon što Testcase 1 dovrši izvršenje.
- Metoda označena s @Before izvršava se prije početka Testcase 2.
- Metoda Testcase2 označena sa @Test je testcase u klasi.
- Metoda označena s @After se izvodi nakon što Testcase 2 dovrši izvršenje.
- Metoda označena s @AfterClass izvršava se jednom na kraju razreda nakon što se izvrše i testcase 1 i 2.
Sekvencijalni tok napomena o životnom ciklusu za JUnit 5 je sljedeći:

- Metoda označena s @BeforeAll izvršava se jednom na početku klase.
- Metoda označena s @BeforeEach izvršava se prije početka Testcase 1.
- Metoda Testcase1 označena sa @Test je testcase u klasi.
- Metoda označena s @AfterEach radi nakon što Testcase 1 dovrši izvršenje.
- Metoda označena s @BeforeEach izvršava se prije početka Testcase 2.
- Metoda Testcase2 označena sa @Test je testcase u klasi.
- Metoda označena s @AfterEach izvodi se nakon što Testcase 2 dovrši izvršenje.
- Metoda označena s @AfterAll izvršava se jednom na kraju razreda nakon što se izvrše i testcase 1 i 2.
Obrada svake bilješke
U ovom odjeljku zaronimo duboko i detaljno shvatimo što čini svaka od napomena o povratnom pozivu iz životnog ciklusa:
@Before (JUnit 4) / @ BeforeEach (JUnit 5):
- Označena metoda izvršava se prije izvođenja svake ispitne metode u testnoj klasi.
- Ova se napomena može koristiti kada želite da se resursi ili podaci o testiranju postave neposredno prije pokretanja svakog testa.
- Na primjer, ako u testnoj klasi JUnit postoji 5 testnih slučajeva, tada se metoda označena s @ Before / @ BeforeEach izvršava 5 puta prije svakog izvršenja test slučaja.
@After (JUnit 4) / @ AfterEach (JUnit 5):
- Označena metoda izvršava se nakon izvršavanja svake ispitne metode u testnoj klasi.
- Ova se napomena može koristiti kada želite otpustiti korištene resurse ili podatke o testiranju nakon svakog pokretanja test slučaja.
- Na primjer, ako u testnoj klasi JUnit postoji 5 testnih slučajeva, tada se metoda označena s @ After / @ AfterEach izvršava 5 puta nakon izvršenja test slučajeva.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5):
- Označena metoda izvršava se prije nego što se izvrše sve metode ispitivanja u testnoj klasi.
- Ova se napomena može koristiti kada želite postaviti resurse ili testne podatke na razini predavanja.
- Kako je ova metoda označena s @ BeforeClass / @ BeforeAll se izvršava samo jednom za testnu klasu i kopija metode dijeli se kroz klasu, a metoda mora biti navedena statički.
- Na primjer, ako u testnoj klasi JUnit postoji 5 testnih slučajeva, tada se metoda označena s @ BeforeClass / @ BeforeAll izvršava jednom po testnoj klasi prije nego što se pokrene bilo koja testcase.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- Označena metoda izvršava se nakon izvršavanja svih metoda ispitivanja u testnoj klasi.
- Ova se napomena može koristiti kada želite objaviti upotrijebljene resurse ili testne podatke na razini klase.
- Budući da je ova metoda označena s @ AfterClass / @ AfterAll izvršava se samo jednom za testnu klasu, a kopija metode dijeli se kroz klasu, mora se navesti metoda statički.
- Na primjer, ako u testnoj klasi JUnit postoji 5 testnih slučajeva, tada se metoda označena s @ AfterClass / @ AfterAll izvršava jednom po testnoj klasi nakon završetka svih testnih slučajeva.
@Test (JUNIT 4 & JUNIT 5):
- Bilješka @Test uobičajena je za JUnit 4, kao i za JUnit 5. Anotirane metode predstavljaju ispitne slučajeve u klasi.
- U klasi JUnit može postojati više metoda s oznakama @Test. To implicira da klasa može imati više testnih slučajeva.
- Postoje različiti atributi ili parametri za testiranje koji bi se mogao proslijediti. Možete dodati iznuđeno vrijeme čekanja za testni slučaj ili dodati iznimku. Ovo će biti detaljno obrađeno u zasebnom vodiču.
- Označena metoda ne može biti privatna ili statična i ne može vratiti nikakvu vrijednost.
- Metoda @Test mora biti proglašena javnom u JUnit 4, dok Junit 5 omogućuje test case definiran bez modifikatora pristupa 'public' jer smatra da 'nema modifikatora pristupa' prema zadanim postavkama 'javni'.
Primjer osnovnog JUNIT testa
Osnovno LIPANJ 4 primjer za bilješke @BeforeClass, @Before, @Test, @After i @AfterClass prikazan je kroz kôd s objašnjenjem u našem ranijem vodiču o 'Test Fixtures'.
Pogledajmo osnovno JUNITET 5 Program za demonstraciju rada napomena o povratnom pozivu u životnom ciklusu @BeforeAll, @BeforeEach, @Test, @AfterEach i @AfterAll.
Šifra 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'); } }Nakon izvršavanja datoteke klase, donji rezultat prikazuje se u prozoru konzole.

Dodatne napomene - JUnit 4 vs JUnit 5
Mnogo je dodatnih bilješki koje se koriste u određene svrhe. Vidjet ćemo popis bilješki za JUnit 4 vs JUnit 5 i svrhu koja mu služi ukratko.
U našim nadolazećim vodičima naći će se detaljan vodič o svakoj od ovih bilješki.
| NAPOMENA 4. LIPNJA | 5. LIPNJA BILJEŠKE | Opis ukratko |
|---|---|---|
| @FixMethodOrder | @TestMethodOrder & @Order | 1. Ove bilješke omogućuju korisniku da odabere redoslijed izvođenja metoda u testnoj klasi |
| @Rule & @ClassRule | @ExtendWith | 1. @Rule - Bilješka je proširena iz klase TestRule koja pomaže primijeniti određena pravila na test slučajevima. 2. Na primjer: stvaranje privremene mape prije izvršavanja testnog slučaja i brisanje mape nakon izvršenja može se postaviti putem pravila. 3. @Rule je dostupan samo u JUnit 4 koji se može koristiti u JUnit 5 Vintage, no @ExtendWith pruža bližu značajku za JUnit 5 4. Slično tome, globalno vremensko ograničenje može se postaviti pomoću @Rule. |
| NA | @TestFactory | 1. Ova napomena podržana samo od strane JUnit 5 i pomaže u stvaranju dinamičkih ili runtime testova. 2. Vraća tok podataka kao prikupljanje i ne može koristiti bilješke povratnog poziva životnog ciklusa |
| NA | @Nostirano | 1. Ovu napomenu podržava samo JUnit Jupiter 2.Pomaže nam u stvaranju ugniježđenih test slučajeva. 3. Na primjer, klasa 1 s testcase 1 može imati @ ugniježđenu klasu 2 s testcase 2. To čini testcase 2 ugniježđenim testcaseom za testcase 1. Stoga se testcase 1 izvršava, a zatim testcase 2 izvršava. 4.Ako se ne koristi napomena @Nested, ugniježđena klasa se neće izvršiti. |
| @Kategorija | @Označiti | 1. Ova napomena pomaže u označavanju i filtriranju testova 2. Možete uključiti testove za izvršenje ili ih isključiti filtriranjem na temelju kategorija u koje spadaju. |
| @RunWith (Parametrizirani.klasa) @ Parameterized.Parameters | @ParameterizedTest i @ValueSource | 1. Ova se napomena koristi za pokretanje metode s varijacijama testnih podataka više puta. 2.JUnit 4 podržava @RunWith i @Parameters dok JUnit 5 Jupiter podržava @ParameterizedTest s @ValueSource |
| @DisplayName | 1. Korisničko definirano ime može se dati testnoj metodi ili klasi za potrebe prikaza. | |
| @TestInstance (LifeCycle.PER_CLASS) i @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5 podržava konfiguraciju životnog ciklusa testova. 2. I JUnit 4 i 5 slijede zadani povratni poziv za povrat životnog ciklusa metode, dok se također može izvršiti konfiguracija po klasi. |
Reference => JUNIT 4 , JUNITET 5
Zaključak
- Saznali smo o bilješkama povratnog poziva za životni ciklus i sekvencijalnom tijeku rada u kojem se metode ispitivanja izvršavaju na temelju njihovih bilješki.
- Naučili smo napomene korištene za JUnit 4 i napomene za JUnit 5.
- Također smo saznali o dodatnim bilješkama koje JUnit 4 podržava i onima koje podržavaju samo JUnit 5.
=> Ovdje pripazite na jednostavnu seriju treninga JUnit.
Preporučena literatura
- Što je učvršćenje JUnit testa: Vodič uz primjere JUnit 4
- JUnit testovi: Kako napisati JUnit test slučajeve s primjerima
- JUnit lekcije za početnike - što je JUnit testiranje
- Preuzmite, instalirajte i konfigurirajte JUnit u Eclipseu
- Višestruki načini izvođenja JUnit testova
- Uvod u JUnit Framework i njegovu upotrebu u skripti za selenij - Vodič za selen br. 11
- Tajni popis u niz i ostale zbirke u Javi
- Metode Java popisa - Poredaj popis, Sadrži, Popis dodaj, Popis ukloni