„JUnit“ bandymų bylos @Before @BeforeClass anotacija

Turinys:

Anonim

„JUnit“ yra populiariausias „Java“ testavimo pagrindas. Tai aiškiai rekomenduojama atlikti vieneto testavimą. „JUnit“ nereikia serverio, kad būtų galima išbandyti žiniatinklio programas, todėl testavimo procesas yra greitas.

„JUnit“ sistema taip pat leidžia greitai ir lengvai generuoti bandymų atvejus ir bandymų duomenis. „ Org.Junit“ paketą sudaro daugybė „JUnit“ testavimo sąsajų ir klasių, tokių kaip „Test“, „Assert“, „After“, „Before“ ir kt.

Kas yra bandymo įrenginys

Prieš suprasdami, kas yra bandomasis įrenginys, panagrinėkime toliau pateiktą kodą

Šis kodas skirtas dviem bandomiesiems atvejams atlikti paprastame faile.

public class OutputFileTest {privati ​​failo išvestis;output = new File (…);output.delete ();public void testFile1 () {// 1 bandymo atvejo patvirtinimo kodas}output.delete ();output = new File (…);public void testFile2 () {// 2 bandymo atvejo patvirtinimo kodas}output.delete ();}

Čia nedaug klausimų

  • Kodas neskaitomas
  • Kodas nėra lengvai prižiūrimas.
  • Kai testų paketas yra sudėtingas, kode gali būti loginių problemų.

Palyginkite tą patį kodą naudodami „JUnit“

viešoji klasė „OutputFileTest“{privati ​​failo išvestis;@ Prieš viešą negaliojančią createOutputFile (){output = new File (…);}@Po viešo negaliojančio deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// bandymo atvejo objekto kodas}@Test public void testFile2 (){// bandymo atvejo objekto kodas}}

Kodas yra daug lengviau skaitomas ir prižiūrimas. Pirmiau nurodyta kodo struktūra yra „ Test“ įrenginys.

Bandomasis renginys yra kontekstas, kuriame vykdomas bandomasis atvejis. Paprastai bandymo įranga apima:

  • Objektai ar ištekliai, kurie yra prieinami kiekvienam bandomajam atvejui.
  • Reikalinga veikla, leidžianti naudotis šiais objektais / ištekliais.
  • Šios veiklos yra
    1. paskirstymas ( sąranka )
    2. paskirstymo panaikinimas ( išardymas ).

Sąranka ir nugriovimas

  • Paprastai prieš kiekvieną bandymą reikia atlikti keletą pakartotinių užduočių. Pavyzdys: sukurkite duomenų bazės ryšį.
  • Kiekvieno bandymo atvejo pabaigoje taip pat gali būti keletas pakartotinių užduočių. Pavyzdys: valyti, kai baigsis bandymo vykdymas.
  • „JUnit“ pateikia anotacijas, kurios padeda nustatyti ir sugriauti. Tai užtikrina, kad ištekliai bus išlaisvinti, o bandymo sistema bus tinkama būsimam bandymo atvejui.

Šios anotacijos aptariamos toliau -

Sąranka

@Prieš anotacija naudojama metodui, kuriame yra „Java“ kodas, paleisti prieš kiekvieną bandymo atvejį. ty jis vykdomas prieš kiekvieną bandymo vykdymą.

Nugriovimas (neatsižvelgiant į nuosprendį)

@Po anotacijos naudojamas metodas, kuriame yra Java kodas, paleidžiamas po kiekvieno bandymo atvejo. Šie metodai bus taikomi net tuo atveju, jei bandomajame pavyzdyje arba teiginių nesėkmėse yra išimčių.

Pastaba:

  • Leidžiama turėti bet kokį aukščiau išvardytų anotacijų skaičių.
  • Visi metodai, komentuoti @Before, bus vykdomi prieš kiekvieną bandymo atvejį, tačiau jie gali būti vykdomi bet kokia tvarka.
  • Galite paveldėti @Before ir @After metodus iš super klasės, vykdymas yra toks: Tai yra standartinis JUnit vykdymo procesas.
  1. Vykdykite @Before metodus superklase
  2. Šioje klasėje vykdykite @Before metodus
  3. Šioje klasėje vykdykite @Test metodą
  4. Šioje klasėje vykdykite @After metodus
  5. Vykdykite metodus @After superklase

Pavyzdys: kurkite klasę su byla kaip bandomuoju įrenginiu

viešoji klasė „OutputFileTest“{privati ​​failo išvestis;@ Prieš viešą negaliojančią createOutputFile (){output = new File (…);}@Po viešo negaliojančio deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// bandymo atvejo objekto kodas}@Test public void testFile2 (){// bandymo atvejo objekto kodas}}

Aukščiau pateiktame pavyzdyje vykdymo grandinė bus tokia:

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

Darant prielaidą: testFile1 () veikia prieš testFile2 () - tai nėra garantuota.

Vienkartinė sąranka

  • Metodą galima paleisti tik vieną kartą visoje bandymų klasėje prieš atliekant bet kurį testą ir prieš bet kurį (-ius) @Before metodą (-us).
  • „Vienkartinė sąranka“ yra naudinga paleidžiant serverius, atidarant ryšius ir pan. Uždaryti ir iš naujo atidaryti kiekvieno testo išteklius užima daug laiko.
  • Tai galima padaryti naudojant „ @BeforeClass“ anotaciją
@BeforeClass public static void Method_Name () {// klasės sąrankos kodas čia}

Vieną kartą nugriaukite

  • Panašiai kaip tik kartą nustatant, taip pat galimas tik vieną kartą atliekamas valymo metodas. Jis vykdomas atlikus visus bandymo atvejo metodus ir @Abei įvykdžius komentarus.
  • Tai naudinga norint sustabdyti serverius, uždaryti ryšio ryšius ir kt.
  • Tai galima padaryti naudojant „ @AfterClass“ anotaciją
@AfterClass viešasis statinis negaliojantis Method_Name (){// klasės valymo kodas čia}

„JUnit Test Suites“

Jei norime atlikti kelis testus nurodyta tvarka, tai galima padaryti sujungus visus testus vienoje vietoje. Ši vieta vadinama bandomaisiais apartamentais. Daugiau informacijos apie tai, kaip atlikti bandomuosius rinkinius ir kaip jis naudojamas „JUnit“, bus aprašytas šioje pamokoje.

„Junit Test Runner“

JUnit pateikia įrankį, skirtą jūsų bandomiesiems atvejams vykdyti.

  • Šiems testams atlikti naudojama „ JUnitCore“ klasė.
  • Metodas, vadinamas „ runClasses“ , kurį teikia org.junit.runner.JUnitCore, naudojamas vienai ar kelioms bandymų klasėms vykdyti.
  • Šio metodo grąžinimo tipas yra objektas Rezultatas ( org.junit.runner.Result ), kuris naudojamas norint pasiekti informaciją apie testus. Norėdami sužinoti daugiau, žr. Šį kodo pavyzdį.
viešosios klasės testas {public static void main (String [] argumentuoja) {Rezultato rezultatas = JUnitCore.runClasses (CreateAndSetName.class);už (Nesėkmės gedimas: rezultatas.getFailures ()) {System.out.println (Gedimas.String ());}System.out.println (result.wasSuccessful ());}}

Aukščiau esančiame kode apdorojamas objektas „rezultatas“, kad gautume bandymų, kuriuos vykdome, gedimus ir sėkmingus rezultatus.

Pirmoji „JUnit“ programa

Geros SDLC žinios, „Java“ programavimas ir programinės įrangos testavimo proceso pagrindai padeda suprasti „JUnit“ programą.

Supraskime „Unit Testing“ naudodami tiesioginį pavyzdį. Turime sukurti bandymų klasę su bandymo metodu, pažymėtu @Test, kaip nurodyta toliau:

„MyFirstClassTest.java“

paketas guru99.JUnit;importuoti statinę org.JUnit.Assert. *;importuoti org.JUnit.Test;viešoji klasė „MyFirstClassTest“ {@Testpublic void myFirstMethod () {String str = "JUnitas veikia gerai";assertEquals („JUnit veikia gerai“, str);}}

TestRunner.java

Norėdami atlikti bandymo metodą (aukščiau), turime sukurti bandomąjį bėgiką. Į bandomąjį bėgiklį turime įtraukti testo klasę kaip parametrą į „JUnitCore“ runclasses () metodą. Tai grąžins testo rezultatą, atsižvelgiant į tai, ar testas buvo išlaikytas, ar nepavyko.

Norėdami gauti daugiau informacijos apie tai, žiūrėkite toliau pateiktą kodą:

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 (MyFirstClassTest.class);už (Nesėkmės gedimas: rezultatas.getFailures ()) {System.out.println (Gedimas.String ());}System.out.println ("Rezultatas ==" + rezultatas.veiksmingai ());}}

Rezultatas

Kai „ TestRunner.java“ atliks mūsų bandymo metodus, mes gausime išvestį kaip nepavykusią arba išlaikytą. Žemiau pateikite išvesties paaiškinimą:

  1. Šiame pavyzdyje, atlikus „ MyFirstClassTest.java“ , testas bus išlaikytas ir rezultatas bus žalias.
  2. Jei nepavyktų, tai turėjo parodyti rezultatą, nes raudonos spalvos ir gedimą galima pastebėti gedimo pėdsakuose. Žiūrėkite žemiau „JUnit gui“:

Santrauka :

  • „JUnit“ yra sistema, palaikanti kelias anotacijas, kad būtų galima nustatyti metodą, kuriame yra testas.
  • JUnit pateikia komentarą @Test, kuris JUnitui nurodo, kad viešojo tuštumo metodas, kuriame jis naudojamas, gali būti bandomasis atvejis.
  • Testo armatūra yra kontekstas, kuriame vykdomas bandymo atvejis
  • Norėdami atlikti kelis bandymus nurodyta tvarka, tai galima padaryti sujungus visus testus vienoje vietoje. Ši vieta vadinama bandomaisiais apartamentais.
  • „JUnit“ pateikia testų atlikimo įrankį, kuriame mes galime paleisti bandymo atvejus, vadinamus „Test Runner“.