JUnit Test Cases @Before @BeforeClass Annotation

Kazalo:

Anonim

JUnit je najbolj priljubljen okvir za testiranje enot v Javi. Izrecno je priporočljivo za enotno testiranje. JUnit ne potrebuje strežnika za testiranje spletne aplikacije, zaradi česar je postopek testiranja hiter.

Okvir JUnit omogoča tudi hitro in enostavno generiranje testnih primerov in testnih podatkov. Paket org.Junit je sestavljen iz številnih vmesnikov in razredov za preskušanje JUnit, kot so Test, Assert, After, Before itd.

Kaj je preskusna naprava

Preden razumemo, kaj je testna naprava, preučimo spodnjo kodo

Ta koda je zasnovana za izvajanje dveh testnih primerov v preprosti datoteki.

javni razred OutputFileTest {zasebni izhod datoteke;output = nova datoteka (…);output.delete ();public void testFile1 () {// Koda za preverjanje testnega primera 1}output.delete ();output = nova datoteka (…);public void testFile2 () {// Koda za preverjanje testnega primera 2}output.delete ();}

Tukaj je nekaj vprašanj

  • Kode ni mogoče prebrati
  • Kode ni enostavno vzdrževati.
  • Če je testna zbirka zapletena, lahko koda vsebuje logične težave.

Primerjajte isto kodo z uporabo JUnit

javni razred OutputFileTest{zasebni izhod datoteke;@ Pred javno razveljavitvijo createOutputFile (){output = nova datoteka (…);}@Po javni praznini deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// koda za cilj testnega primera}@Test public void testFile2 (){// koda za cilj testnega primera}}

Koda je veliko bolj berljiva in vzdržna. Zgornja struktura kode je preskusna naprava.

Preskusna naprava je kontekst, v katerem deluje testni primer. Običajno preskusne naprave vključujejo:

  • Predmeti ali viri, ki so na voljo za vsak testni primer.
  • Potrebne dejavnosti, ki omogočajo dostopnost teh predmetov / virov.
  • Te dejavnosti so
    1. dodelitev ( namestitev )
    2. odstranitev ( odstranitev ).

Namestitev in odstranitev

  • Običajno je treba pred vsakim testnim primerom opraviti nekaj ponavljajočih se nalog. Primer: ustvarite povezavo z bazo podatkov.
  • Na koncu vsakega preizkusnega primera se lahko ponavljajo nekatere naloge. Primer: čiščenje po končanem preizkusu.
  • JUnit ponuja opombe, ki pomagajo pri namestitvi in ​​razgradnji. Zagotavlja sprostitev virov in testni sistem je v pripravljenosti za naslednji testni primer.

Te opombe so obravnavane spodaj -

Nastaviti

@Before pripis se uporablja pri metodi, ki vsebuje kodo Java, ki se zažene pred vsakim testnim primerom. tj. teče pred vsako izvedbo testa.

Teardown (ne glede na sodbo)

@After pripis se uporablja za metodo, ki vsebuje kodo Java, ki se zažene po vsakem testnem primeru. Te metode se bodo izvajale, tudi če bodo v testnem primeru ali v primeru napak pri trditvah vržene kakršne koli izjeme.

Opomba:

  • Dovoljeno je imeti zgoraj navedeno število pripisov.
  • Vse metode, označene z @Before, se bodo izvajale pred vsakim testnim primerom, vendar se lahko izvajajo v poljubnem vrstnem redu.
  • Metodi @Before in @After lahko podedujete iz super razreda, izvedba je naslednja: To je standardni postopek izvajanja v JUnit.
  1. Izvedite metode @Before v nadrazredu
  2. Izvedite metode @Before v tem razredu
  3. Izvedite metodo @Test v tem razredu
  4. Izvedite metode @After v tem razredu
  5. Izvedite metode @After v nadrazredu

Primer: Ustvarjanje razreda z datoteko kot preskusno napravo

javni razred OutputFileTest{zasebni izhod datoteke;@ Pred javno razveljavitvijo createOutputFile (){output = nova datoteka (…);}@Po javni praznini deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// koda za cilj testnega primera}@Test public void testFile2 (){// koda za cilj testnega primera}}

V zgornjem primeru bo izvedbena veriga naslednja,

  1. createOutputFile ()
  2. testFile1 ()
  3. deleteOutputFile ()
  4. createOutputFile ()
  5. testFile2 ()
  6. deleteOutputFile ()

Predpostavka: testFile1 () se zažene pred testFile2 () - kar ni zagotovljeno.

Enkratna nastavitev

  • Metodo je mogoče zagnati samo enkrat za celoten razred preizkusa, preden se izvede kateri koli preskus in pred katero koli metodo (-i) @Before .
  • "Enkrat samo nastavitev" je uporabna za zagon strežnikov, odpiranje komunikacij itd. Za zapiranje in ponovno odpiranje virov za vsak test je zamudno.
  • To je mogoče storiti s pomočjo @BeforeClass pripis
@BeforeClass javna statična praznina Method_Name () {// nastavitvena koda predavanja tukaj}

Enkrat samo ruši

  • Podobno kot enkratna nastavitev je na voljo tudi enkratna metoda čiščenja. Zažene se po izvedbi vseh metod testnega primera in @After pripisov.
  • Uporaben je za zaustavitev strežnikov, zapiranje komunikacijskih povezav itd.
  • To je mogoče storiti s pomočjo @AfterClass pripis
@AfterClass javna statična praznina Method_Name (){// koda za čiščenje razreda tukaj}

JUnit Test Suites

Če želimo izvesti več testov v določenem vrstnem redu, lahko to storimo tako, da združimo vse teste na enem mestu. To mesto se imenuje kot testni apartma. Več podrobnosti o tem, kako izvesti testne pakete in kako se uporablja v JUnit, bo zajetih v tej vadnici.

Testni tekač Junit

JUnit ponuja orodje za izvajanje vaših testnih primerov.

  • Za izvajanje teh preskusov se uporablja razred JUnitCore .
  • Metoda, imenovana runClasses, ki jo ponuja org.junit.runner.JUnitCore, se uporablja za zagon enega ali več testnih razredov.
  • Vrnitev te metode je objekt Rezultat ( org.junit.runner.Result ), ki se uporablja za dostop do informacij o preskusih. Za večjo jasnost glejte naslednji primer kode.
test javnega razreda {public static void main (String [] args) {Rezultat rezultata = JUnitCore.runClasses (CreateAndSetName.class);for (Napaka neuspeha: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}

V zgornji kodi je predmet "rezultat" obdelan, da dobimo napake in uspešne rezultate testnih primerov, ki jih izvajamo.

Prvi program JUnit

Pošteno poznavanje SDLC, programiranje Java in osnov postopka testiranja programske opreme pomaga pri razumevanju programa JUnit.

Razumimo enotno testiranje na primeru v živo. Ustvariti moramo preizkusni razred s preskusno metodo, označeno z @Test, kot je navedeno spodaj:

MyFirstClassTest.java

paket guru99.JUnit;uvozi statično org.JUnit.Assert. *;uvoz org.JUnit.Test;javni razred MyFirstClassTest {@Testjavna void myFirstMethod () {String str = "JUnit deluje dobro";assertEquals ("JUnit deluje v redu", str);}}

TestRunner.java

Za izvedbo naše preskusne metode (zgoraj) moramo ustvariti preizkusni tekač. V testnem tekaču moramo dodati testni razred kot parameter v metodi JUnitCore's runclasses (). Vrnil bo rezultat testa glede na to, ali je bil test uspešno ali neuspešen.

Za več podrobnosti glejte spodnjo kodo:

paket guru99.JUnit;uvoz org.JUnit.runner.JUnitCore;uvoz org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;javni razred TestRunner {public static void main (String [] args) {Rezultat rezultata = JUnitCore.runClasses (MyFirstClassTest.class);for (Napaka neuspeha: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Rezultat ==" + result.wasSuccessful ());}}

Izhod

Ko TestRunner.java izvede naše preskusne metode, dobimo izhod kot neuspešen ali posredovan. Spodaj najdete razlago izhoda:

  1. V tem primeru je po izvedbi MyFirstClassTest.java preizkus opravljen in rezultat je v zeleni barvi.
  2. Če ne bi uspel, bi moral prikazati rezultat kot rdeč in neuspeh je mogoče opaziti v sledovih napak. Glej spodaj JUnit gui:

Povzetek :

  • JUnit je ogrodje, ki podpira več pripisov za identifikacijo metode, ki vsebuje test.
  • JUnit ponuja pripis z imenom @Test, ki JUnit-u sporoča, da se lahko metoda javnega praznjenja, v kateri se uporablja, izvaja kot testni primer.
  • Testna naprava je kontekst, v katerem se izvaja testni primer
  • Če želite izvesti več testov v določenem vrstnem redu, lahko to storite tako, da na enem mestu združite vse teste. To mesto se imenuje kot testni apartma.
  • JUnit ponuja orodje za izvajanje testov, kjer lahko zaženemo svoje testne primere, imenovane Test Runner.