JUnit Annotations Tutorial s primjerom: Što je @Test i @After
Što je JUnit Bilješke?
JUnit Bilješke je poseban oblik sintaktičkih metapodataka koji se mogu dodati Java izvorni kod za bolju čitljivost i strukturu koda. Varijable, parametri, paketi, metode i klase mogu biti označeni. Bilješke su uvedene u Junit4, što čini Java kod čitljiviji i jednostavniji. Ovo je velika razlika između Junit3 i Junit4 što se Junit4 temelji na komentarima.
Uz poznavanje anotacija u Junit5, može se lako naučiti i implementirati a JUnit test. Ispod je važno i često korišteno JUnit popis zabilješki:
S.No. | Bilješke | Description |
---|---|---|
1. | @Test | Ova je napomena zamjena za org.junit.TestCase koja označava da se javna void metoda kojoj je pridružena može izvršiti kao testni slučaj. |
2. | @Prije | Ova se napomena koristi ako želite izvršiti neku naredbu kao što su preduvjeti prije svakog testnog slučaja. |
3. | @Prije Klase | Ova se napomena koristi ako želite izvršiti neke naredbe prije nego što se svi testni slučajevi za npr. testnu vezu moraju izvršiti prije svih testnih slučajeva. |
4. | @Nakon | Ova se napomena može koristiti ako želite izvršiti neke naredbe nakon svake Testni slučaj za npr. resetiranje varijabli, brisanje privremenih datoteka, varijabli itd. |
5. | @Nakon nastave | Ova se napomena može koristiti ako želite izvršiti neke naredbe nakon svih testnih slučajeva za npr. Oslobađanje resursa nakon izvršenja svih testnih slučajeva. |
6. | @Zanemaruje | Ova se napomena može koristiti ako želite ignorirati neke naredbe tijekom izvođenja testa za npr. onemogućavanje nekih testnih slučajeva tijekom izvođenja testa. |
7. | @Test(timeout=500) | Ova se napomena može koristiti ako želite postaviti vremensko ograničenje tijekom izvođenja testa, npr. ako radite pod nekim SLA (Service level Agreement), a testovi moraju biti dovršeni unutar određenog vremena. |
8. | @Test(očekivano=IllegalArgumentException.class) | Ova se napomena može koristiti ako želite obraditi neke iznimke tijekom izvođenja testa. Na primjer, ako želite provjeriti baca li određena metoda navedenu iznimku ili ne. |
JUnit Primjer komentara
Kreirajmo razred koji pokriva važno JUnit primjedbe s jednostavnim izjavama za ispis i izvršite ih s klasom pokretača testova:
Korak 1) Razmotrite donju java klasu koja ima različite metode koje su priložene gore navedenim komentarima:
JunitAnnotationsExample.java
package guru99.junit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class JunitAnnotationsExample { private ArrayList<String> list; @BeforeClass public static void m1() { System.out.println("Using @BeforeClass , executed before all test cases "); } @Before public void m2() { list = new ArrayList<String>(); System.out.println("Using @Before annotations ,executed before each test cases "); } @AfterClass public static void m3() { System.out.println("Using @AfterClass ,executed after all test cases"); } @After public void m4() { list.clear(); System.out.println("Using @After ,executed after each test cases"); } @Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); } @Ignore public void m6() { System.out.println("Using @Ignore , this execution is ignored"); } @Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); } @Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); } }
Korak 2) kreirajmo klasu pokretača testa za izvršavanje gornjeg testa:
TestRunner.java
package guru99.junit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(JunitAnnotationsExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
očekivani rezultat
- Svi testni slučajevi će se izvoditi jedan po jedan, a sve izjave za ispis mogu se vidjeti na konzoli.
- Kao što je objašnjeno u gornjoj tablici @Prije napomene u JUnit, @BeforeClass [ metoda m1() i m2() ] će se izvršiti prije svakog, odnosno prije svih testnih slučajeva.
- Na isti način @Nakon u JUnit, @afterClass (metoda m3() i m4()) izvršit će se nakon svakog, odnosno nakon svih testnih slučajeva. @ignore (metoda m6()) će se tretirati kao ignoriranje testa.
Analizirajmo detaljno testne slučajeve korištene u gornjoj java klasi:
- Razmotrite metodu m5() kao što je dano u nastavku:
@Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); }
U gornjoj metodi dok dodajete niz u varijablu "list" tako
- list.isEmpty() vratit će false.
- assertFalse(list.isEmpty()) mora vratiti true.
- Kao rezultat toga, testni slučaj će pass.
Kako ste dodali samo jedan niz na popis, veličina je jedan.
- list.size() mora vratiti int vrijednost kao “1” .
- So assertEquals(1, list.size()) mora vratiti true.
- Kao rezultat toga, testni slučaj će pass.
- Razmotrite metodu m7() kao što je dano u nastavku:
@Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); }
Kao što je gore razmotreno @Test(timeout = 10)anotacija se koristi za nametanje vremenskog ograničenja u testnom slučaju.
- Razmotrite metodu m8() kao što je dano u nastavku:
@Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); }
Kao što je gore razmotreno @Test(očekivano) će provjeriti navedenu iznimku tijekom svog izvođenja tako da će metoda m8() izbaciti "Nema takve iznimke metode." Kao rezultat toga, test će se izvršiti s iznimkom.
Budući da su svi testni slučajevi prošli, to rezultira uspješnim izvršenjem testa.
Stvarni rezultat
Kako u gornjem primjeru postoje tri testna slučaja, svi će se testni slučajevi izvršavati jedan po jedan. Pogledajte izlaz u nastavku:
Pogledajte dolje ispisane izjave koje se mogu vidjeti na konzoli:
Korištenje @BeforeClass, izvršeno prije svih testnih slučajeva
Korištenje napomena @Before, koje se izvode prije svakog testnog slučaja
Korištenje @After, izvršava se nakon svakog testa
Korištenje napomena @Before, koje se izvode prije svakog testnog slučaja
Korištenje @Test(timeout), može se koristiti za nametanje vremenskog ograničenja JUnit4 testni slučaj
Korištenje @After, izvršava se nakon svakog testa
Korištenje napomena @Before, koje se izvode prije svakog testnog slučaja
Korištenjem @Test(expected) , provjerit će navedenu iznimku tijekom svog izvođenja
Korištenje @After, izvršava se nakon svakog testa
Korištenje @AfterClass, izvršava se nakon svih testnih slučajeva
JUnit Potvrdi klasu
Ova klasa pruža hrpu metoda tvrdnji korisnih u pisanju testnog slučaja. Ako su svi assert iskazi prošli, rezultati testa su uspješni. Ako bilo koja tvrdnja ne uspije, rezultati testa nisu uspješni.
Kao što ste vidjeli ranije, tablica u nastavku opisuje važne metode i opis Assert-a:
S.No. | način | Description |
---|---|---|
1. | void assertEquals(booleov očekivano, booleov stvarni) | Provjerava jesu li dvije vrijednosti jednake slično jednakoj metodi klase Objekt |
2. | void assertFalse (booleov uvjet) | funkcionalnost je provjeriti je li uvjet lažan. |
3. | void assertNotNull(Object object) | Funkcija "assertNotNull" služi za provjeru da objekt nije null. |
4. | void assertNull(Object objekt) | Funkcija “assertNull” je provjera je li objekt null. |
5. | void assertTrue(booleov uvjet) | Funkcija “assertTrue” služi za provjeru je li uvjet istinit. |
6. | void fail() | Ako želite izbaciti bilo kakvu pogrešku tvrdnje, imate fail() koji uvijek rezultira presudom o neuspjehu. |
7. | void assertSame([String poruka] | Funkcija "assertSame" služi za provjeru odnose li se dva objekta na isti objekt. |
8. | void assertNotSame([String poruka] | Funkcija "assertNotSame" služi za provjeru da se dva objekta ne odnose na isti objekt. |
JUnit Razred testnih slučajeva
Za izvođenje višestrukih testova dostupna je klasa TestCase org.junit.TestCase paketi. @Testna napomena govori JUnit da se ova javna void metoda (ovdje testni slučaj) kojoj je priložena može pokrenuti kao testni slučaj.
Donja tablica prikazuje neke važne metode dostupne u org.junit.TestCase razred:
S.No. | način | Description |
---|---|---|
1. | int countTestCases() | Ova se metoda koristi za brojanje koliko je testnih slučajeva izvršio pokrenuti (TestResult tr) metoda. |
2. | TestResult createResult() | Ova se metoda koristi za stvaranje a Rezultat testa objekt. |
3. | Niz getName() | Ova metoda vraća niz koji nije ništa drugo do a TestCase. |
4. | TestRezult run() | Ova se metoda koristi za izvođenje testa koji vraća a Rezultat testa objekt |
5. | void run (TestResult rezultat) | Ova se metoda koristi za izvođenje testa koji ima Rezultat testa objekt koji ne vraća ništa. |
6. | void setName(naziv niza) | Ova se metoda koristi za postavljanje naziva a TestCase. |
7. | void SetUp() | Ova se metoda koristi za pisanje koda pridruživanja resursa. npr. Stvorite vezu s bazom podataka. |
8. | praznina tearDown() | Ova se metoda koristi za pisanje koda za izdavanje resursa. npr. otpusti vezu s bazom podataka nakon izvođenja transakcijske operacije. |
JUnit Klasa TestResult
Kada izvršite test, on vraća rezultat (u obliku Rezultat testa objekt). Ovaj objekt TestResult može se koristiti za analizu rezultirajućeg objekta. Ovaj rezultat testa može biti neuspješan ili uspješan.
Pogledajte donju tablicu za važne metode koje se koriste u klasi org.junit.TestResult:
S.No. | način | Description |
---|---|---|
1. | void addError(Test test, Throwable t) | Ova se metoda koristi ako je potrebno dodati grešku u test. |
2. | void addFailure(Test test, AssertionFailedError t) | Ova se metoda koristi ako je potrebno dodati grešku na popis grešaka. |
3. | void endTest (Testni test) | Ova se metoda koristi za obavještavanje da je test izveden (završen) |
4. | int errorCount() | Ova se metoda koristi za otkrivanje pogreške tijekom izvođenja testa. |
5. | Nabrajanje pogreške() | Ova metoda jednostavno vraća kolekciju (nabrajanje ovdje) pogrešaka. |
6. | int errorCount() | Ova se metoda koristi za dobivanje broja grešaka otkrivenih tijekom izvođenja testa. |
7. | void run (TestCase test) | Ova se metoda koristi za izvođenje testnog slučaja. |
8. | int runCount() | Ova metoda jednostavno broji izvršeni test. |
9. | void startTest(Testni test) | Ova se metoda koristi za obavještavanje da je test započeo. |
10. | void stop() | Ova se metoda koristi za zaustavljanje probnog rada. |
JUnit Klasa paketa testova
Ako želite izvršiti više testova određenim redoslijedom, to možete učiniti kombiniranjem svih testova na jednom mjestu. Ovo mjesto se zove testni apartmani.
Pogledajte donju tablicu za važne metode koje se koriste u org.junit.TestSuite razred:
S.No. | način | Description |
---|---|---|
1. | void addTest(Testni test) | Ova se metoda koristi ako želite dodati test u paket. |
2. | void addTestSuite(Klasa testClass) | Ova se metoda koristi ako želite navesti klasu dok dodajete test u paket. |
3. | int countTestCases() | Ova se metoda koristi ako želite izbrojati testne slučajeve. |
4. | Niz getName() | Ova se metoda koristi za dobivanje imena paketa testova. |
5. | void run (TestResult rezultat) | Ova se metoda koristi za izvođenje testa i prikupljanje rezultata testa Rezultat testa objekt. |
6. | void setName(naziv niza) | Ova metoda se koristi za postavljanje naziva TestSuite. |
7. | Testiraj testAt(int indeks) | Ova metoda se koristi ako želite vratiti test na zadani indeks. |
8. | int testCount() | Ova se metoda koristi ako želite vratiti određeni broj testova u Suite. |
9. | upozorenje o statičkom testu (poruka niza) | Ova metoda vraća test koji neće uspjeti i bilježi poruku upozorenja. |
rezime
- JUnit pruža prijenosni API koji pruža sve važne klase i Selenium napomene korisne u pisanju jediničnog testa.
- Klase koje su vrlo korisne pri pisanju testnog slučaja
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- Važan i često korišten JUnit popis zabilješki@Prije@PrijeClass@Poslije
@Nakon nastave
@Test
@Zanemariti