Što su JUnit bilješke?
JUNIT ANNOTATIONS je poseban oblik sintaktičkih metapodataka koji se mogu dodati izvornom kodu Java radi bolje čitljivosti i strukture koda. Varijable, parametri, paketi, metode i klase mogu se bilježiti. Bilješke su uvedene u Junit4, što Java kôd čini čitljivijim i jednostavnijim. To je velika razlika između Junit3 i Junit4 u tome što je Junit4 zasnovan na napomenama.
Znanjem napomena u Junit5, lako se može naučiti i implementirati JUnit test. Ispod je popis važnih i često korištenih napomena:
S.Ne. | Bilješke | Opis |
---|---|---|
1. | @Test | Ova je napomena zamjena za org.junit.TestCase što ukazuje na to da se metoda javne praznine na koju je priključ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 test slučaja. |
3. | @BeforeClass | Ova se napomena koristi ako želite izvršiti neke izraze prije nego što se svi test slučajevi, npr. Test veza moraju izvršiti prije svih test slučajeva. |
4. | @Nakon | Ova se napomena može koristiti ako želite izvršiti neke izraze nakon svakog Test slučaja, npr. Za resetiranje varijabli, brisanje privremenih datoteka, varijabli itd. |
5. | @Nakon nastave | Ova se napomena može koristiti ako želite izvršiti neke izraze nakon svih testnih slučajeva, npr. Oslobađanje resursa nakon izvršavanja svih testnih slučajeva. |
6. | @Ignorira | Ova se napomena može koristiti ako želite zanemariti neke izjave tijekom izvršavanja testa, npr. Onemogućavanje nekih test slučajeva tijekom izvođenja testa. |
7. | @Test (timeout = 500) | Ova se napomena može koristiti ako želite postaviti neko vremensko ograničenje tijekom izvođenja testa, npr. Ako radite prema nekom SLA (ugovor o razini usluge), a testovi moraju biti dovršeni u određenom vremenu. |
8. | @Test (očekuje se = IllegalArgumentException.class) | Ova se napomena može koristiti ako želite obraditi neku iznimku tijekom izvođenja testa. Na primjer, ako želite provjeriti baca li određena metoda određenu iznimku ili ne. |
U ovom vodiču naučit ćete-
- Primjer JUnit napomena
- Klasa JUnit Assert
- Razred JUnit Test Case
- Klasa JUnit TestResult
- JUnit Test Suite Class
Primjer JUnit napomena
Stvorimo klasu koja pokriva važne JUnit bilješke jednostavnim ispisima i izvodimo je s klasom test runnera:
Korak 1) Razmotrite ispod Java klase koja ima različite metode povezane s gore navedenim napomenama:
JunitAnnotationsExample.java
paket guru99.junit;uvoz statičke org.junit.Assert.assertEquals;uvezi statički org.junit.Assert.assertFalse;uvoz java.util.ArrayList;import org.junit.After;uvoz org.junit.AfterClass;uvoz org.junit.Before;uvoz org.junit.BeforeClass;import org.junit.Ignore;uvoz org.junit.Test;javna klasa JunitAnnotationsExample {privatni popis ArrayList;@BeforeClassjavna statička praznina m1 () {System.out.println ("Korištenje @BeforeClass, izvršeno prije svih testnih slučajeva");}@Prijejavna praznina m2 () {list = novi ArrayList ();System.out.println ("Korištenje bilješki @Before, izvršene prije svakog test slučaja");}@Nakon nastavejavna statička praznina m3 () {System.out.println ("Korištenje @AfterClass, izvršeno nakon svih testnih slučajeva");}@Nakonjavna praznina m4 () {list.clear ();System.out.println ("Korištenje @After, izvršava se nakon svakog test slučaja");}@Testjavna praznina m5 () {list.add ("test");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}@Zanemaritijavna praznina m6 () {System.out.println ("Korištenje @Ignore, ovo izvršavanje se zanemaruje");}@Test (timeout = 10)javna praznina m7 () {System.out.println ("Korištenjem @Test (timeout), može se koristiti za provođenje vremenskog ograničenja u testnom slučaju JUnit4");}@Test (očekuje se = NoSuchMethodException.class)javna praznina m8 () {System.out.println ("Koristeći @Test (očekuje se), provjerit će postoji li izuzetak tijekom izvršenja");}}
Korak 2) izradimo klasu test runnera za izvršavanje gore navedenog testa:
TestRunner.java
paket guru99.junit;import org.junit.runner.JUnitCore;uvoz org.junit.runner.Result;import org.junit.runner.notification.Failure;javna klasa TestRunner {javna statička void glavna (String [] args) {Rezultat rezultata = JUnitCore.runClasses (JunitAnnotationsExample.class);for (Neuspjeh neuspjeha: result.getFailures ()) {System.out.println (neuspjeh.toString ());}System.out.println ("Rezultat ==" + rezultat.bio je uspješan ());}}
očekivani rezultat
- Svi testovi će se izvršavati jedan po jedan, a svi ispisi mogu se vidjeti na konzoli.
- Kao što je objašnjeno u gornjoj tablici @Before, @BeforeClass [metoda m1 () i m2 ()] izvršit će se prije svakog, odnosno prije svih testnih slučajeva.
- Na isti način @ after, @ afterClass (metoda m3 () i m4 ()) izvršit će se nakon svakog, odnosno nakon svih testnih slučajeva. @ignore (metoda m6 ()) tretirat će se kao ignoriranje testa.
Detaljno analizirajmo test slučajeve koji se koriste u gornjoj java klasi:
- Razmotrite metodu m5 () kako je dana u nastavku:
@Testjavna praznina 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, test će proći .
Kako ste na popis dodali samo jedan niz, tako je i veličina jedna.
- list.size () mora vratiti vrijednost int kao "1".
- Dakle , assertEquals (1, list.size ()) mora vratiti true.
- Kao rezultat, test će proći .
- Razmotrite metodu m7 () kako je dana u nastavku:
@Test (timeout = 10)javna praznina m7 () {System.out.println ("Korištenjem @Test (timeout), može se koristiti za provođenje vremenskog ograničenja u testnom slučaju JUnit4");}
Kao što je gore spomenuto, napomena @Test (timeout = 10) koristi se za provođenje vremenskog ograničenja u test slučaju.
- Razmotrite metodu m8 () kako je dana u nastavku:
@Test (očekuje se = NoSuchMethodException.class)javna praznina m8 () {System.out.println ("Koristeći @Test (očekuje se), provjerit će postoji li izuzetak tijekom izvršenja");}
Kao što je gore spomenuto, @Test (očekuje se) će tijekom izvršenja provjeriti navedenu iznimku pa će metoda m8 () baciti "Nema takve iznimke metode." Kao rezultat, test će se izvršiti s iznimkom.
Kako se prolaze svi testovi, to rezultira uspješnim izvršavanjem testa.
Stvarni rezultat
Kako su u gornjem primjeru tri testna slučaja, svi će se testni slučajevi izvršavati jedan po jedan. Pogledajte izlaz ispod :
Pogledajte dolje ispise koji se mogu vidjeti na konzoli:
Korištenje @BeforeClass, izvedeno prije svih test slučajeva
Korištenje bilješki @Before, izvršenih prije svakog test slučaja
Korištenje @After, izvršava se nakon svakog test slučaja
Korištenje bilješki @Before, izvršenih prije svakog test slučaja
Korištenjem @Test (timeout) može se koristiti za provođenje timeout-a u testnom slučaju JUnit4
Korištenje @After, izvršava se nakon svakog test slučaja
Korištenje bilješki @Before, izvršenih prije svakog test slučaja
Koristeći @Test (očekuje se), provjerit će postoji li izuzetak tijekom njegovog izvršavanja
Korištenje @After, izvršava se nakon svakog test slučaja
Korištenje @AfterClass, izvršeno nakon svih test slučajeva
Klasa JUnit Assert
Ova klasa nudi hrpu metoda tvrđenja korisnih za pisanje testnog slučaja. Ako se proslijede sve izjave za potvrdu, rezultati ispitivanja su uspješni. Ako bilo koja izjava o tvrdnji ne uspije, rezultati ispitivanja nisu uspjeli.
Kao što ste vidjeli ranije, donja tablica opisuje važne metode i opis Assert:
S.Ne. | Metoda | Opis |
---|---|---|
1. | void assertEquals (logičko očekivano, logičko stvarno) | Provjerava jesu li dvije vrijednosti jednake metodi equals klase Objekt |
2. | void assertFalse (logičko stanje) | funkcionalnost je provjeravati je li uvjet netačan. |
3. | void assertNotNull (objektni objekt) | Funkcija "assertNotNull" je provjeravati da objekt nije null. |
4. | void assertNull (objektni objekt) | Funkcija "assertNull" je provjeravati je li objekt null. |
5. | void assertTrue (logičko stanje) | Funkcija "assertTrue" je provjeriti je li uvjet istinit. |
6. | void fail () | Ako želite izbaciti bilo kakvu pogrešku u tvrdnji, imate neuspjeh () koji uvijek rezultira presudom neuspjeha. |
7. | void assertSame ([String poruka] | Funkcija "assertSame" je provjeriti odnose li se dva objekta na isti objekt. |
8. | void assertNotSame ([String poruka] | Funkcija "assertNotSame" je provjeriti da se dva objekta ne odnose na isti objekt. |
Razred JUnit Test Case
Za pokretanje višestrukog testa klasa TestCase dostupna je u paketima org.junit.TestCase . Bilješka @Test govori JUnit-u da se ova metoda javnog void (Test Case ovdje) na koju je priključena može pokrenuti kao test slučaj.
Ispod tablice prikazane su neke važne metode dostupne u klasi org.junit.TestCase :
S.Ne. | Metoda | Opis |
---|---|---|
1. | int countTestCases () | Ova se metoda koristi za brojanje koliko je test slučajeva izvedeno metodom run (TestResult tr) . |
2. | TestResult createResult () | Ova metoda koristi se za stvaranje objekta TestResult . |
3. | Niz getName () | Ova metoda vraća niz koji nije ništa drugo do TestCase . |
4. | TestResult run () | Ova se metoda koristi za izvršavanje testa koji vraća objekt TestResult |
5. | void run (rezultat TestResult) | Ova se metoda koristi za izvršavanje testa koji ima objekt TestResult koji ne vraća ništa. |
6. | void setName (naziv niza) | Ovom se metodom postavlja ime TestCase. |
7. | void setUp () | Ova se metoda koristi za pisanje koda pridruživanja resursa. npr. Stvaranje veze s bazom podataka. |
8. | void tearDown () | Ova se metoda koristi za pisanje koda izdanja resursa. npr. Oslobodite vezu s bazom podataka nakon izvođenja transakcijske operacije. |
Klasa JUnit TestResult
Kada izvršite test, on vraća rezultat (u obliku objekta TestResult ). Ovaj objekt TestResult može se koristiti za analizu rezultirajućeg objekta. Ovaj test može biti neuspješan ili uspješan. Pogledajte donju tablicu za važne metode korištene u klasi org.junit.TestResult:S.Ne. | Metoda | Opis |
---|---|---|
1. | void addError (testni test, mogućnost bacanja) | Ova se metoda koristi ako trebate dodati pogrešku u test. |
2. | void addFailure (test testa, AssertionFailedError t) | Ova se metoda koristi ako trebate dodati neuspjeh na popis neuspjeha. |
3. | void endTest (test test) | Ova se metoda koristi za obavještavanje da je test proveden (završen) |
4. | int errorCount () | Ova se metoda koristi za otkrivanje pogreške tijekom izvođenja testa. |
5. | Pogreške | Ova metoda jednostavno vraća zbirku (ovdje nabrajanje) pogrešaka. |
6. | int failureCount () | Ova se metoda koristi za utvrđivanje broja pogrešaka otkrivenih tijekom izvođenja testa. |
7. | void run (TestCase test) | Ova se metoda koristi za izvršavanje testnog slučaja. |
8. | int runCount () | Ova metoda jednostavno broji izvršeni test. |
9. | void startTest (test test) | Ova se metoda koristi za obavještavanje o pokretanju testa. |
10. | void stop () | Ova se metoda koristi za testiranje zaustavljanja. |
JUnit Test Suite Class
Ako želite izvršiti više testova u određenom redoslijedu, to možete učiniti kombiniranjem svih testova na jednom mjestu. Ovo se mjesto naziva testnim apartmanima.
Pogledajte donju tablicu za važne metode korištene u klasi org.junit.TestSuite :
S.Ne. | Metoda | Opis |
---|---|---|
1. | void addTest (test test) | Ova se metoda koristi ako želite dodati test u paket. |
2. | void addTestSuite (Class extends TestCase> testClass) | Ova se metoda koristi ako želite navesti klasu tijekom dodavanja testa u paket. |
3. | int countTestCases () | Ova se metoda koristi ako želite izbrojiti broj testnih slučajeva. |
4. | Niz getName () | Ova se metoda koristi za dobivanje naziva paketa za testiranje. |
5. | void run (rezultat TestResult) | Ova se metoda koristi za izvršavanje testa i prikupljanje rezultata testa u objektu TestResult . |
6. | void setName (naziv niza) | Ovom se metodom postavlja ime TestSuite . |
7. | Test testAt (indeks int) | Ova se metoda koristi ako želite vratiti test po zadanom indeksu. |
8. | int testCount () | Ova se metoda koristi ako želite vratiti brojne testove u Suiteu. |
9. | upozorenje statičkog testa (niska poruka) | Ova metoda vraća test koji neće uspjeti i zapisuje poruku upozorenja. |
Sažetak:
- JUnit nudi prijenosni API, koji pruža sve važne klase i napomene korisne za pisanje jediničnog testa.
- Predavanja koja su vrlo korisna za pisanje testnog slučaja
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- popis važnih i često korištenih bilješki
@Prije
@BeforeClass
@Nakon
@Nakon nastave
@Test
@Zanemariti