JUnit on Java-ohjelmien suosituin testikehys. Sitä suositellaan yksikkötestaukseen. JUnit ei vaadi palvelinta verkkosovellusten testaamiseen, mikä tekee testausprosessista nopeaa.
JUnit-kehys mahdollistaa myös testitapausten ja testitietojen nopean ja helpon luomisen. Org.Junit Paketti koostuu useiden liittymien ja luokat JUnitin Testaus kuten Test, väittävät jälkeen, ennen jne
Mikä on Test-kiinnitys
Ennen kuin ymmärrämme, mikä testi on, tutustu alla olevaan koodiin
Tämä koodi on suunniteltu suorittamaan kaksi testitapausta yksinkertaisella tiedostolla.
public class OutputFileTest {yksityinen Tiedostolähtö;output = uusi tiedosto (…);output.delete ();public void testFile1 () {// Testitapauksen 1 vahvistuskoodi}output.delete ();output = uusi tiedosto (…);public void testFile2 () {// Koodi testitapauksen 2 vahvistamiseksi}output.delete ();}
Muutama asia täällä
- Koodi ei ole luettavissa
- Koodia ei ole helppo ylläpitää.
- Kun testipaketti on monimutkainen, koodi voi sisältää loogisia ongelmia.
Vertaa samaa koodia JUnit-sovelluksella
julkisen luokan OutputFileTest{yksityinen Tiedostolähtö;@Ennen julkista void createOutputFile (){output = uusi tiedosto (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// koodi testitapauksen tavoitteelle}@Test public void testFile2 (){// koodi testitapauksen tavoitteelle}}
Koodi on selvästi luettavampi ja ylläpidettävämpi. Yllä oleva koodirakenne on testivalaisin.
Testauslaite on konteksti, jossa testitapausta suoritetaan. Testausvalaisimia ovat tyypillisesti:
- Objektit tai resurssit, jotka ovat käytettävissä mille tahansa testitapaukselle.
- Vaaditut toiminnot, joiden avulla nämä objektit / resurssit ovat käytettävissä.
- Nämä toiminnot ovat
- jakaminen ( määritys )
- vapauttaminen ( purkaminen ).
Asennus ja repiminen
- Yleensä on olemassa useita toistuvia tehtäviä, jotka on tehtävä ennen kutakin testitapausta. Esimerkki: luo tietokantayhteys.
- Samoin jokaisen testitapauksen lopussa voi olla joitain toistuvia tehtäviä. Esimerkki: siivoaminen testin suorittamisen jälkeen.
- JUnit tarjoaa merkintöjä, jotka auttavat asennuksessa ja purkamisessa. Se varmistaa, että resursseja vapautetaan ja testausjärjestelmä on valmiina seuraavaa testitapausta varten.
Näitä merkintöjä käsitellään jäljempänä-
Perustaa
@Before- merkintää käytetään menetelmässä, joka sisältää Java-koodin ennen jokaista testitapausta. ts. se suoritetaan ennen jokaista testin suoritusta.
Teardown (tuomiosta riippumatta)
@Amerkintää käytetään menetelmällä, joka sisältää Java-koodin suoritettavaksi jokaisen testitapauksen jälkeen. Nämä menetelmät toimivat, vaikka testitapauksessa tai väitteiden epäonnistumisissa olisi poikkeuksia.
Huomautus:
- Sallittu on mikä tahansa määrä yllä lueteltuja merkintöjä.
- Kaikki @Before- merkinnällä merkityt menetelmät suoritetaan ennen jokaista testitapausta, mutta ne voivat toimia missä tahansa järjestyksessä.
- Voit periä @Before- ja @After-menetelmät superluokasta, Suoritus on seuraava: Se on tavallinen suoritusprosessi JUnitissa.
- Suorita @Before -menetelmät superluokassa
- Suorita tämän luokan @Before-menetelmät
- Suorita @Test-menetelmä tässä luokassa
- Suorita tämän luokan @After-menetelmät
- Suorita @After -menetelmät superluokassa
Esimerkki: Luokan luominen tiedostona testilaitteena
julkisen luokan OutputFileTest{yksityinen Tiedostolähtö;@Ennen julkista void createOutputFile (){output = uusi tiedosto (…);}@After public void deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// koodi testitapauksen tavoitteelle}@Test public void testFile2 (){// koodi testitapauksen tavoitteelle}}
Edellä olevassa esimerkissä toteutusketju on seuraava-
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Oletus: testFile1 () suoritetaan ennen testFile2 () - jota ei voida taata.
Kerta-asennus
- Menetelmä on mahdollista suorittaa vain kerran koko testiluokalle ennen minkään testin suorittamista ja ennen mitä tahansa @Before- menetelmää.
- "Kerran vain asennus" on hyödyllinen palvelinten käynnistämisessä, tietoliikenteen avaamisessa jne. Jokaisen testin resurssien sulkeminen ja avaaminen on aikaa vievää.
- Tämä voidaan tehdä käyttämällä @BeforeClass -merkintää
@BeforeClass public static void Method_Name () {// luokan asetuskoodi täällä}
Kerran vain repiä
- Samanlainen kuin kerran vain määritys, myös kerran puhdistettava menetelmä on käytettävissä. Se toimii, kun kaikki testitapaustavat ja @Amerkinnät on suoritettu.
- Se on hyödyllinen palvelinten pysäyttämiseen, tietoliikenneyhteyksien sulkemiseen jne.
- Tämä voidaan tehdä @AfterClass- merkinnällä
@AfterClass public static void Method_Name (){// luokan siivouskoodi täällä}
JUnit Test Suites
Jos haluamme suorittaa useita testejä määrätyssä järjestyksessä, se voidaan tehdä yhdistämällä kaikki testit yhteen paikkaan. Tätä paikkaa kutsutaan testisviiteiksi. Lisätietoja testipakettien suorittamisesta ja siitä, miten sitä käytetään JUnitissa, käsitellään tässä opetusohjelmassa.
Junit Test Runner
JUnit tarjoaa työkalun testitapausten suorittamiseen.
- JUnitCore- luokkaa käytetään näiden testien suorittamiseen.
- Menetelmää nimeltä runClasses , jonka tarjoaa org.junit.runner.JUnitCore , käytetään yhden tai useamman testiluokan suorittamiseen.
- Tämän menetelmän palautustyyppi on Tulos- objekti ( org.junit.runner.Result ), jota käytetään testien tietojen saamiseen. Katso seuraava koodiesimerkki selkeyden lisäämiseksi.
julkisen luokan testi {public staattinen void main (String [] argumentoi) {Tulos = JUnitCore.runClasses (CreateAndSetName.class);for (epäonnistumisvirhe: tulos.getFailures ()) {System.out.println (vika.String ());}System.out.println (tulos oli onnistunut ());}}
Yllä olevassa koodissa "tulos" -objekti käsitellään suorittamiemme testitapausten epäonnistumisten ja onnistuneiden tulosten saamiseksi.
Ensimmäinen JUnit-ohjelma
SDLC: n, Java-ohjelmoinnin ja ohjelmistojen testausprosessin perusteellinen tuntemus auttaa ymmärtämään JUnit-ohjelmaa.
Ymmärretään yksikkötestaus live-esimerkin avulla. Meidän on luotava testiluokka testimenetelmällä, johon on merkitty @Test, kuten alla on esitetty:
MyFirstClassTest.java
paketti guru99.JUnit;tuo staattinen org.JUnit.Assert. *;tuonti org.JUnit.Test;julkinen luokka MyFirstClassTest {@Testatapublic void myFirstMethod () {String str = "JUnit toimii hyvin";assertEquals ("JUnit toimii hyvin", str);}}
TestRunner.java
Testimenetelmän suorittamiseksi (yllä) meidän on luotava testijuoksija. Testijuoksijana meidän on lisättävä testiluokka parametrina JUnitCoren runclasses () -menetelmään. Se palauttaa testituloksen sen perusteella, onko testi hyväksytty vai epäonnistunut.
Katso lisätietoja tästä alla olevasta koodista:
paketti guru99.JUnit;tuo org.JUnit.runner.JUnitCore;tuo org.JUnit.runner.Result;tuo org.JUnit.runner.notification.Failure;julkinen luokka TestRunner {public staattinen void main (String [] argumentoi) {Tulos = JUnitCore.runClasses (MyFirstClassTest.class);for (epäonnistumisvirhe: tulos.getFailures ()) {System.out.println (vika.String ());}System.out.println ("Tulos ==" + tulos.Onnistui ());}}
Tuotos
Kun TestRunner.java on suorittanut testimenetelmät, saamme tuotoksen epäonnistuneena tai läpäistynä. Alla on tuotoksen selitys:
- Tässä esimerkissä, kun MyFirstClassTest.java on suoritettu , testi on läpäissyt ja tulos on vihreä.
- Jos se ei olisi onnistunut, sen olisi pitänyt näyttää tulos punaisena ja vika voidaan havaita vikajäljissä. Katso alla JUnit gui:
Yhteenveto :
- JUnit on kehys, joka tukee useita merkintöjä testin sisältävän menetelmän tunnistamiseksi.
- JUnit tarjoaa @Test- nimisen merkinnän , joka kertoo JUnitille, että public void -menetelmä, jossa sitä käytetään, voi toimia testitapauksena.
- Testauslaite on konteksti, jossa testitapaus suoritetaan
- Voit suorittaa useita testejä määrätyssä järjestyksessä yhdistämällä kaikki testit yhteen paikkaan. Tätä paikkaa kutsutaan testisviiteiksi.
- JUnit tarjoaa työkalun testien suorittamiseen, jossa voimme suorittaa testitapauksemme, joita kutsutaan Test Runneriksi.