JUnit on Java-s kõige populaarsem testimisraamistik. Seda soovitatakse selgesõnaliselt üksuste testimiseks. JUnit ei vaja veebirakenduste testimiseks serverit, mis muudab testimisprotsessi kiireks.
JUniti raamistik võimaldab ka testjuhtumite ja testandmete kiiret ja lihtsat genereerimist. Org.Junit pakett koosneb paljudest liidesed ja klassid rongid testimine nagu Test, väidavad Pärast, Enne jne
Mis on testimisseade
Enne kui saame aru, mis on testimisseade, uurime allolevat koodi
See kood on mõeldud kahe testjuhtumi käivitamiseks lihtsal failil.
public class OutputFileTest {privaatne failiväljund;väljund = uus fail (…);väljund.delete ();public void testFile1 () {// Kood 1. juhtumi kontrollimiseks}väljund.delete ();väljund = uus fail (…);public void testFile2 () {// Kood 2. juhtumi kontrollimiseks}väljund.delete ();}
Siin on vähe küsimusi
- Kood pole loetav
- Koodi pole kerge hooldada.
- Kui testipakett on keeruline, võib kood sisaldada loogilisi probleeme.
Võrrelge sama koodi JUniti abil
avalik klass OutputFileTest{privaatne failiväljund;@Enne avalikku void createOutputFile (){väljund = uus fail (…);}@ Pärast avalikku tühistamist deleteOutputFile (){väljund.delete ();}@Test public void testFile1 (){// testjuhtumi eesmärgi kood}@Test public void testFile2 (){// testjuhtumi eesmärgi kood}}
Kood on palju loetavam ja hooldatavam. Ülaltoodud koodistruktuur on testimisseade.
Testimisseade on kontekst, kus testjuhtum töötab. Tavaliselt hõlmavad testiseadmed:
- Objektid või ressursid, mis on saadaval iga testjuhtumi jaoks.
- Vajalikud tegevused, mis muudavad need objektid / ressursid kättesaadavaks.
- Need tegevused on
- jaotamine ( seadistamine )
- eraldamise tühistamine ( lammutamine ).
Seadistamine ja lõhkumine
- Tavaliselt tuleb enne igat testijuhtumit teha mõned korduvad toimingud. Näide: andmebaasiühenduse loomine.
- Samuti võib iga testijuhtumi lõpus olla mõni korduv ülesanne. Näide: koristamine, kui testi täitmine on lõppenud.
- JUnit pakub märkusi, mis aitavad seadistamisel ja lammutamisel. See tagab ressursside vabastamise ja testimissüsteemi järgmise testimisjuhu jaoks valmisolekus.
Neid märkusi käsitletakse allpool-
Seadistamine
Kasutatakse funktsiooni @Enne märkimist Java-koodi sisaldaval meetodil enne iga testimisjuhtu. st see töötab enne iga testi käivitamist.
Teardown (sõltumata kohtuotsusest)
@Pärast märkimist kasutatakse java koodi sisaldaval meetodil, mis käivitatakse pärast igat testijuhtu . Need meetodid toimivad ka siis, kui testimises või väitmisvigade korral tehakse erandeid.
Märge:
- Eespool loetletud märkuste arv on lubatud.
- Kõik meetodid, millele on lisatud märge @Before , töötavad enne igat testijuhtu , kuid neid võib kasutada mis tahes järjekorras.
- Saate superklassist pärida meetodid @Before ja @After, on täitmine järgmine: see on JUniti standardne täitmisprotsess.
- Käivitage superklassis meetodid @Before
- Käivitage selles klassis meetodid @Before
- Käivitage selles klassis @Test meetod
- Käivitage selles klassis meetodid @After
- Käivitage meetodid @After superklassis
Näide: klassi loomine failiga testimisseadmena
avalik klass OutputFileTest{privaatne failiväljund;@Enne avalikku void createOutputFile (){väljund = uus fail (…);}@ Pärast avalikku tühistamist deleteOutputFile (){väljund.delete ();}@Test public void testFile1 (){// testjuhtumi eesmärgi kood}@Test public void testFile2 (){// testjuhtumi eesmärgi kood}}
Ülaltoodud näites on täitmisahel järgmine:
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Eeldus: testFile1 () töötab enne testFile2 () - mis pole tagatud.
Ainult ühekordne seadistamine
- Meetodit on võimalik käivitada kogu testklassi jaoks ainult üks kord enne kõigi testide sooritamist ja enne mis tahes @Before- meetodit ( -e ).
- "Üks kord seadistamine" on kasulik serverite käivitamiseks, side avamiseks jne. Iga testi jaoks on aeganõudev ressursside sulgemine ja uuesti avamine.
- Seda saab teha märkuse @BeforeClass abil
@BeforeClass public static void Method_Name () {// klassi seadistuskood siin}
Ükskord ainult maha rebida
- Sarnaselt ühekordse seadistusega on saadaval ka ühekordse puhastamise meetod. See töötab pärast kõigi testijuhtumimeetodite kasutamist ja pärast märkmete käivitamist.
- See on kasulik serverite peatamiseks, sidelinkide sulgemiseks jne.
- Seda saab teha märkuse @AfterClass abil
@AfterClass avalik staatiline void Method_Name (){// klassi puhastamise kood siin}
JUnit Test Suites
Kui soovime läbi viia mitu testi kindlas järjekorras, saab seda teha, ühendades kõik testid ühte kohta. Seda kohta nimetatakse proovikomplektideks. Lisateavet testipakettide käivitamise ja selle kasutamise kohta JUnitis käsitletakse selles õpetuses.
Juniti testijooksja
JUnit pakub tööriista testjuhtumite täitmiseks.
- Nende testide läbiviimiseks kasutatakse klassi JUnitCore .
- Ühe või mitme testklassi käitamiseks kasutatakse meetodit nimega runClasses, mille pakub org.junit.runner.JUnitCore .
- Selle meetodi tagastustüüp on objekt Tulemus ( org.junit.runner.Result ), mida kasutatakse testide kohta teabe saamiseks. Vaadake selguse huvides järgmist koodinäidet.
avaliku klassi test {public staatiline void main (String [] args) {Tulemus = JUnitCore.runClasses (CreateAndSetName.class);for (rikke tõrge: result.getFailures ()) {System.out.println (rike.String ());}System.out.println (result.wasSuccessful ());}}
Ülaltoodud koodis töödeldakse objekti "tulemus", et saada testitavate juhtumite tõrkeid ja edukaid tulemusi.
Esimene JUniti programm
Õiged teadmised SDLC-st, Java-programmeerimisest ja tarkvara testimise põhitõdedest aitavad JUniti programmist aru saada.
Mõistame üksuste testimist reaalajas näite abil. Peame looma testklassi , kasutades testimeetodit , millele on lisatud märge @Test, nagu allpool esitatud:
MyFirstClassTest.java
pakett guru99.JUnit;import staatiline org.JUnit.Assert. *;import org.JUnit.Test;avalik klass MyFirstClassTest {@Testpublic void myFirstMethod () {String str = "JUnit töötab hästi";assertEquals ("JUnit töötab hästi", str);}}
TestRunner.java
(Ülaltoodud) testimeetodi teostamiseks peame looma testijooksja. Testijooksjas peame JUnitCore'i runclasses () meetodisse lisama parameetrina testklassi. See tagastab testi tulemuse, lähtudes sellest, kas test on läbitud või ebaõnnestunud.
Selle kohta leiate lisateavet allolevast koodist:
pakett guru99.JUnit;import org.JUnit.runner.JUnitCore;import org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;avalik klass TestRunner {public staatiline void main (String [] args) {Tulemus = JUnitCore.runClasses (MyFirstClassTest.class);for (rikke tõrge: result.getFailures ()) {System.out.println (rike.String ());}System.out.println ("Result ==" + result.wasSuccessful ());}}
Väljund
Kui TestRunner.java on meie testimeetodid läbi viinud, saame väljundi ebaõnnestunud või läbitud. Allpool leiate väljundi selgituse:
- Selles näites on pärast MyFirstClassTest.java käivitamist test läbitud ja tulemus on roheline.
- Kui see oleks ebaõnnestunud, oleks see pidanud näitama tulemust, kuna rikke jälgedes võib täheldada punast ja ebaõnnestumist. Vaadake allpool JUnit gui:
Kokkuvõte :
- JUnit on raamistik, mis toetab mitut märkust testi sisaldava meetodi tuvastamiseks.
- JUnit pakub märkust nimega @Test, mis ütleb JUnitile, et avaliku tühisuse meetodit, milles seda kasutatakse, saab katsetada.
- Testimisseade on kontekst, kus testjuhtum töötab
- Mitme testi sooritamiseks kindlas järjekorras saab seda teha, ühendades kõik testid ühte kohta. Seda kohta nimetatakse proovikomplektideks.
- JUnit pakub testide läbiviimiseks tööriista, kus saame oma testijuhte käivitada kui Test Runner.