Kas yra „JUnit“ anotacijos?
„JUNIT ANOTACIJOS“ yra speciali sintaksinių metaduomenų forma, kurią galima pridėti prie „Java“ šaltinio kodo, kad būtų geriau suprantamas kodas ir struktūra. Kintamuosius, parametrus, paketus, metodus ir klases galima komentuoti. „Junit4“ buvo pristatytos anotacijos, kurios daro „Java“ kodą lengviau skaitomą ir paprastą. Tai yra didelis skirtumas tarp „Junit3“ ir „Junit4“, kad „Junit4“ yra pagrįstas anotacijomis.
Žinant „Junit5“ anotacijas, galima lengvai išmokti ir įgyvendinti „JUnit“ testą. Žemiau pateikiamas svarbių ir dažnai naudojamų anotacijų sąrašas:
S.No. | Anotacijos | apibūdinimas |
---|---|---|
1. | @Test | Ši anotacija yra org.junit.TestCase pakaitalas, nurodantis, kad viešojo tuštumo metodas, prie kurio jis pridėtas, gali būti vykdomas kaip bandomasis atvejis. |
2. | @Prieš | Ši anotacija naudojama, jei prieš kiekvieną bandymo atvejį norite atlikti tam tikrą teiginį, pvz., Išankstines sąlygas. |
3. | @BeforeClass | Ši anotacija naudojama, jei norite įvykdyti kai kuriuos teiginius, kol visi bandymo atvejai, pvz., Bandomasis ryšys, turi būti įvykdyti prieš visus bandymo atvejus. |
4. | @Po | Ši anotacija gali būti naudojama, jei po kiekvieno bandymo atvejo norite atlikti keletą sakinių, pvz., Iš naujo nustatyti kintamuosius, ištrinti laikinus failus, kintamuosius ir pan. |
5. | @Po pamokų | Ši anotacija gali būti naudojama, jei norite atlikti kai kuriuos teiginius po visų bandomųjų atvejų, pvz., Išlaisvindami išteklius atlikę visus bandomuosius atvejus. |
6. | @ Ignoruoja | Ši anotacija gali būti naudojama, jei norite nepaisyti kai kurių teiginių vykdant bandymą, pvz., Išjungiant kai kuriuos bandymo atvejus atliekant bandymą. |
7. | @Test (skirtasis laikas = 500) | Ši anotacija gali būti naudojama, jei bandymo vykdymo metu norite nustatyti tam tikrą skirtąjį laiką, pvz., Jei dirbate pagal tam tikrą SLA (paslaugų lygio sutartį), o bandymus reikia atlikti per tam tikrą nurodytą laiką. |
8. | @Test (tikėtinas = IllegalArgumentException.class) | Ši anotacija gali būti naudojama, jei norite atlikti kai kurias išimtis atliekant bandymą. Pavyzdžiui, jei norite patikrinti, ar tam tikras metodas išmeta nurodytą išimtį, ar ne. |
Šioje pamokoje sužinosite
- JUnit komentarų pavyzdys
- „JUnit“ tvirtinimo klasė
- „JUnit“ bandymų bylų klasė
- „JUnit TestResult“ klasė
- „JUnit Test Suite“ klasė
JUnit komentarų pavyzdys
Sukurkime klasę, apimančią svarbias „JUnit“ anotacijas su paprastais spausdintiniais teiginiais, ir vykdykime ją bandomųjų bėgikų klase:
1 žingsnis. Apsvarstykite žemiau „java“ klasę, turėdami įvairius metodus, kurie pridedami prie aukščiau išvardytų komentarų:
„JunitAnnotationsExample.java“
paketas guru99.junit;importuoti statinį org.junit.Assert.assertEquals;importuoti statinį org.junit.Assert.assertFalse;importuoti java.util.ArrayList;importuoti org.junit.After;importuoti org.junit.AfterClass;importuoti org.junit.Before;importuoti org.junit.BeforeClass;importuoti org.junit.Ignore;importuoti org.junit.Test;viešoji klasė „JunitAnnotationsExample“privatus „ArrayList“sąrašas;@BeforeClasspublic static void m1 () {System.out.println ("Naudojant @BeforeClass, vykdomas prieš visus bandymo atvejus");}@Priešpublic void m2 () {sąrašas = naujas masyvo sąrašas ();System.out.println ("Naudojant komentarus @ Prieš, atliekami prieš kiekvieną bandymo atvejį");}@Po pamokųpublic static void m3 () {System.out.println ("Naudojant @AfterClass, vykdoma atlikus visus bandymo atvejus");}@Popublic void m4 () {sąrašas.skaidrus ();System.out.println ("Naudojant @After, vykdoma po kiekvieno bandymo atvejo");}@Testpublic void m5 () {list.add („testas“);assertFalse (list.isEmpty ());assertEquals (1, sąrašas.dydis ());}@ Ignoruotipublic void m6 () {System.out.println ("Naudojant @Ignore, šis vykdymas nepaisomas");}@Test (skirtasis laikas = 10)public void m7 () {System.out.println ("Naudojant @Test (skirtasis laikas), jis gali būti naudojamas laikui vykdyti JUnit4 bandomojoje byloje");}@Test (tikėtinas = NoSuchMethodException.class)public void m8 () {System.out.println ("Naudodamas @Test (tikimasi), vykdydamas patikrins, ar nėra nurodytos išimties");}}
2 žingsnis) sukurkime bandomųjų bėgikų klasę, kad įvykdytume pirmiau pateiktą testą:
TestRunner.java
paketas guru99.junit;importuoti org.junit.runner.JUnitCore;importuoti org.junit.runner.Result;importuoti org.junit.runner.notification.Failure;viešoji klasė „TestRunner“public static void main (String [] argumentuoja) {Rezultato rezultatas = JUnitCore.runClasses (JunitAnnotationsExample.class);už (Nesėkmės gedimas: rezultatas.getFailures ()) {System.out.println (Gedimas.String ());}System.out.println ("Rezultatas ==" + rezultatas.veiksmingai ());}}
tikėtinas rezultatas
- Visi bandymo atvejai bus vykdomi po vieną, o visas atspausdintas ataskaitas galima pamatyti konsolėje.
- Kaip aptarta aukščiau esančioje lentelėje @Before, @BeforeClass [metodas m1 () ir m2 ()] bus vykdomi atitinkamai prieš kiekvieną ir prieš visus bandymo atvejus.
- Lygiai taip pat @ after, @ afterClass (metodas m3 () ir m4 ()) bus vykdomi atitinkamai po kiekvieno ir po visų bandymų atvejų. @ignore (metodas m6 ()) bus traktuojamas kaip ignoruojantis testą.
Išsamiai išanalizuokime bandymo atvejus, naudojamus aukščiau esančioje „Java“ klasėje:
- Apsvarstykite toliau pateiktą metodą m5 ():
@Testpublic void m5 () {list.add („testas“);assertFalse (list.isEmpty ());assertEquals (1, sąrašas.dydis ());}
Aukščiau aprašytu metodu, kai pridedate eilutę kintamajame „sąrašas“, taip
- list.isEmpty () grąžins klaidingą reikšmę .
- assertFalse (list.isEmpty ()) turi grąžinti true.
- Dėl to bandymo atvejis praeis .
Į sąrašą įtraukėte tik vieną eilutę, todėl dydis yra vienas.
- list.size () turi grąžinti int reikšmę kaip „1“.
- Taigi „ assertEquals“ (1, list.size ()) turi būti teisinga.
- Dėl to bandymo atvejis praeis .
- Apsvarstykite m7 () metodą, kaip nurodyta toliau:
@Test (skirtasis laikas = 10)public void m7 () {System.out.println ("Naudojant @Test (skirtasis laikas), jis gali būti naudojamas laikui vykdyti JUnit4 bandomojoje byloje");}
Kaip aptarta aukščiau, @ testo (skirtasis laikas = 10) anotacija naudojama norint įvykdyti skirtąjį laiką testiniame atveju.
- Apsvarstykite m8 () metodą, kaip nurodyta toliau:
@Test (tikėtinas = NoSuchMethodException.class)public void m8 () {System.out.println ("Naudodamas @Test (tikimasi), vykdydamas patikrins, ar nėra nurodytos išimties");}
Kaip aptarta aukščiau, @Test (tikėtinas) vykdymo metu patikrins, ar nėra nurodytos išimties, todėl metodas m8 () išmes „Nėra tokio metodo išimties“. Dėl to testas bus vykdomas su išimtimi.
Kai visi bandymo atvejai yra perduodami, bandymas sėkmingai įvykdomas.
Faktinis rezultatas
Kadangi aukščiau pateiktame pavyzdyje yra trys bandomieji atvejai, visi bandomieji atvejai bus vykdomi po vieną. Žr. Išvestį žemiau :
Žr. Toliau pateiktus atspausdintus teiginius, kuriuos galite pamatyti konsolėje:
Naudojant @BeforeClass, įvykdytą prieš visus bandymo atvejus
Naudojant „Prieš komentarus“, vykdomas prieš kiekvieną bandymo atvejį
Naudojant @After, vykdoma po kiekvieno bandymo atvejo
Naudojant „Prieš komentarus“, vykdomas prieš kiekvieną bandymo atvejį
Naudojant „@Test“ (skirtasis laikas), jis gali būti naudojamas „JUnit4“ bandymo byloje
Naudojant @After, vykdoma po kiekvieno bandymo atvejo
Naudojant „Prieš komentarus“, vykdomas prieš kiekvieną bandymo atvejį
Naudodamas „@Test“ (tikimasi), vykdydamas patikrins, ar nėra nurodytos išimties
Naudojant @After, vykdoma po kiekvieno bandymo atvejo
Naudojant @AfterClass, vykdoma po visų bandymų atvejų
„JUnit“ tvirtinimo klasė
Ši klasė pateikia daugybę tvirtinimo metodų, naudingų rašant bandomąjį atvejį. Jei visi teiginiai teigiami, testo rezultatai yra sėkmingi. Jei kuris nors teiginys nepavyksta, bandymo rezultatai nepavyksta.
Kaip matėte anksčiau, žemiau esančioje lentelėje aprašomi svarbūs „Assert“ metodai ir aprašymas:
S.No. | Metodas | apibūdinimas |
---|---|---|
1. | void assertEquals (tikėtina loginė logika, tikroji loginė loginė vertė) | Jis tikrina, ar dvi reikšmės yra lygios, panašios į lygių objektų klasės metodą |
2. | void assertFalse (loginė sąlyga) | Funkcija yra patikrinti, ar sąlyga yra klaidinga. |
3. | void assertNotNull (Objekto objektas) | Funkcija „assertNotNull“ yra patikrinti, ar objektas nėra nulinis. |
4. | void assertNull (Objekto objektas) | Funkcija „assertNull“ yra patikrinti, ar objektas yra nulinis. |
5. | void assertTrue (loginė sąlyga) | „assertTrue“ funkcija yra patikrinti, ar sąlyga teisinga. |
6. | anuliuoti nepavyksta () | Jei norite mesti bet kokią teiginio klaidą, turite failą „Fail“ (), dėl kurio visada priimamas sprendimas dėl nesėkmės. |
7. | void assertSame ([eilutės pranešimas] | „AssertSame“ funkcija yra patikrinti, ar abu objektai nurodo tą patį objektą. |
8. | void assertNotSame ([eilutės pranešimas] | Funkcija „assertNotSame“ yra patikrinti, ar du objektai nėra susiję su tuo pačiu objektu. |
„JUnit“ bandymų bylų klasė
Norėdami paleisti kelis testus, „TestCase“ klasė yra prieinama org.junit.TestCase paketuose. „Anotation @Test“ pasakoja „JUnit“, kad šis viešojo niekingumo metodas (čia pateikiamas „Test Case“), prie kurio jis pridedamas, gali būti vykdomas kaip bandomasis atvejis.
Žemiau esančioje lentelėje pateikiami keli svarbūs metodai, galimi org.junit.TestCase klasėje:
S.No. | Metodas | apibūdinimas |
---|---|---|
1. | int countTestCases () | Šis metodas naudojamas suskaičiuoti, kiek bandymo atvejų įvykdyta vykdant (TestResult tr) metodą. |
2. | TestResult createResult () | Šis metodas naudojamas kuriant „ TestResult“ objektą. |
3. | Eilutė „getName“ () | Šis metodas pateikia eilutę, kuri yra tik „ TestCase“ . |
4. | „TestResult run“ () | Šis metodas naudojamas atlikti testą, kuris grąžina objektą TestResult |
5. | void run („TestResult“ rezultatas) | Šis metodas naudojamas atlikti testą su „ TestResult“ objektu, kuris nieko negrąžina. |
6. | void setName (eilutės pavadinimas) | Šis metodas naudojamas norint nustatyti „ TestCase“ pavadinimą . |
7. | void setUp () | Šis metodas naudojamas išteklių susiejimo kodui rašyti. pvz., sukurti duomenų bazės ryšį. |
8. | void tearDown () | Šis metodas naudojamas šaltinio išleidimo kodui rašyti. pvz., atleiskite duomenų bazės ryšį atlikę operacijos operaciją. |
„JUnit TestResult“ klasė
Kai atliekate testą, jis pateikia rezultatą ( objekto TestResult forma ). Šis „TestResult“ objektas gali būti naudojamas gautam objektui analizuoti. Šis bandymo rezultatas gali būti nesėkmingas arba sėkmingas. Žemiau esančioje lentelėje pateikiami svarbūs metodai, naudojami org.junit.TestResult klasėje:S.No. | Metodas | apibūdinimas |
---|---|---|
1. | void addError (bandymo testas, metamas t) | Šis metodas naudojamas, jei jums reikia pridėti klaidą prie bandymo. |
2. | void addFailure (bandymo testas, AssertionFailedError t) | Šis metodas naudojamas, jei reikia įtraukti gedimų sąrašą į gedimų sąrašą. |
3. | void endTest (bandymo testas) | Šis metodas naudojamas pranešti, kad atliekamas bandymas (baigtas) |
4. | int errorCount () | Šis metodas naudojamas norint gauti klaidą, aptiktą atliekant bandymą. |
5. | Surašymo | Šis metodas paprasčiausiai pateikia klaidų rinkinį (čia nurodomas sąrašas). |
6. | int failCount () | Šis metodas naudojamas norint gauti klaidų, aptiktų atliekant bandymą, skaičių. |
7. | negaliojantis paleidimas („TestCase“ testas) | Šis metodas naudojamas vykdant bandomąjį atvejį. |
8. | int runCount () | Šis metodas paprasčiausiai suskaičiuoja atliktą testą. |
9. | negaliojantis startTest (bandymo testas) | Šis metodas naudojamas pranešti, kad bandymas yra pradėtas. |
10. | negaliojantis sustojimas () | Šis metodas naudojamas norint sustabdyti bandymą. |
„JUnit Test Suite“ klasė
Jei norite atlikti kelis bandymus nurodyta tvarka, tai galima padaryti sujungus visus testus vienoje vietoje. Ši vieta vadinama bandomaisiais apartamentais.
Žemiau esančioje lentelėje pateikiami svarbūs metodai, naudojami org.junit.TestSuite klasėje:
S.No. | Metodas | apibūdinimas |
---|---|---|
1. | negaliojantis „addTest“ (bandymo testas) | Šis metodas naudojamas, jei norite pridėti rinkinį bandymą. |
2. | void addTestSuite (klasė pratęsia TestCase> testClass) | Šis metodas naudojamas, jei norite nurodyti klasę pridedant testą prie rinkinio. |
3. | int countTestCases () | Šis metodas naudojamas, jei norite suskaičiuoti testų skaičių. |
4. | Eilutė „getName“ () | Šis metodas naudojamas norint gauti testų paketo pavadinimą. |
5. | void run („TestResult“ rezultatas) | Šis metodas naudojamas atlikti testą ir surinkti testo rezultatą objekte TestResult . |
6. | void setName (eilutės pavadinimas) | Šis metodas naudojamas norint nustatyti „ TestSuite “ pavadinimą . |
7. | Bandymo testAt (int indeksas) | Šis metodas naudojamas, jei norite grąžinti testą pagal nurodytą indeksą. |
8. | int testCount () | Šis metodas naudojamas, jei norite grąžinti kelis „Suite“ testus. |
9. | statinis bandymo įspėjimas (eilutės pranešimas) | Šis metodas pateikia bandymą, kuris nepavyks, ir užregistruos įspėjamąjį pranešimą. |
Santrauka:
- „JUnit“ pateikia nešiojamą API, kurioje pateikiamos visos svarbios klasės ir anotacijos, naudingos rašant vieneto testą.
- Klasės, kurios yra labai naudingos rašant bandomąjį atvejį
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- svarbių ir dažnai naudojamų anotacijų sąrašas
@Prieš
@BeforeClass
@Po
@Po pamokų
@Test
@ Ignoruoti