JUnit este cel mai popular cadru de testare unitară din Java. Este recomandat în mod explicit pentru testarea unitară. JUnit nu necesită server pentru testarea aplicației web, ceea ce face procesul de testare rapid.
Cadrul JUnit permite, de asemenea, generarea rapidă și ușoară de cazuri de testare și date de testare. Org.Junit Pachetul format din mai multe interfețe și clase pentru JUnit de testare , cum ar fi de testare, Assert, după, înainte, etc.
Ce este dispozitivul de testare
Înainte de a înțelege ce este un dispozitiv de testare, să studiem codul de mai jos
Acest cod este conceput pentru a executa două cazuri de testare pe un fișier simplu.
public class OutputFileTest {ieșire fișier privat;output = new File (...);output.delete ();public nul TestFile1 () {// Cod pentru verificarea cazului de test 1}output.delete ();output = new File (...);public void TestFile2 () {// Cod pentru verificarea cazului de test 2}output.delete ();}
Puține numere aici
- Codul nu poate fi citit
- Codul nu este ușor de întreținut.
- Atunci când suita de testare este complexă, codul ar putea conține probleme logice.
Comparați același cod folosind JUnit
public class OutputFileTest{ieșire fișier privat;@Înainte de public void createOutputFile (){output = new File (...);}@After public void deleteOutputFile (){output.delete ();}@Test public nul testFile1 (){// cod pentru obiectivul cazului de testare}@Test public void testFile2 (){// cod pentru obiectivul cazului de testare}}
Codul este mult mai lizibil și mai ușor de întreținut. Structura codului de mai sus este un dispozitiv de testare.
Un dispozitiv de testare este un context în care rulează un caz de testare. De obicei, dispozitivele de testare includ:
- Obiecte sau resurse care sunt disponibile pentru orice caz de testare.
- Activități necesare care fac disponibile aceste obiecte / resurse.
- Aceste activități sunt
- alocare ( configurare )
- desalocare ( demolare ).
Configurare și deconectare
- De obicei, există câteva sarcini repetate care trebuie efectuate înainte de fiecare caz de testare. Exemplu: creați o conexiune la baza de date.
- La fel, la sfârșitul fiecărui caz de testare, pot exista unele sarcini repetate. Exemplu: pentru a curăța odată ce executarea testului s-a încheiat.
- JUnit furnizează adnotări care vă ajută la configurare și eliminare. Se asigură că resursele sunt eliberate, iar sistemul de testare este în stare pregătită pentru următorul caz de testare.
Aceste adnotări sunt discutate mai jos-
Înființat
@Before adnotare este utilizată pe o metodă care conține cod Java pentru a rula înainte de fiecare caz de testare. adică rulează înainte de fiecare execuție a testului.
Distrugerea (indiferent de verdict)
@După adnotare este utilizată o metodă care conține cod Java pentru a rula după fiecare caz de testare. Aceste metode vor rula chiar dacă există excepții în cazul testului sau în caz de eșecuri ale afirmației.
Notă:
- Este permis să aveți orice număr de adnotări enumerate mai sus.
- Toate metodele adnotate cu @Before vor rula înainte de fiecare caz de testare, dar pot rula în orice ordine.
- Puteți moșteni metodele @Before și @After dintr-o super clasă, Execution este după cum urmează: Este un proces de execuție standard în JUnit.
- Executați metodele @Before în superclasă
- Executați metodele @Before din această clasă
- Executați o metodă @Test în această clasă
- Executați metodele @After din această clasă
- Executați metodele @After în superclasă
Exemplu: Crearea unei clase cu fișier ca dispozitiv de testare
public class OutputFileTest{ieșire fișier privat;@Înainte de public void createOutputFile (){output = new File (...);}@After public void deleteOutputFile (){output.delete ();}@Test public nul testFile1 (){// cod pentru obiectivul cazului de testare}@Test public void testFile2 (){// cod pentru obiectivul cazului de testare}}
În exemplul de mai sus, lanțul de execuție va fi după cum urmează-
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Presupunere: testFile1 () rulează înainte de testFile2 () - ceea ce nu este garantat.
Configurare o singură dată
- Este posibil să rulați o metodă o singură dată pentru întreaga clasă de test înainte ca oricare dintre teste să fie executate și înainte de orice metodă (e) @Before .
- „Odată configurat doar” sunt utile pentru pornirea serverelor, deschiderea comunicațiilor etc. Este necesară mult timp pentru a închide și redeschide resurse pentru fiecare test.
- Acest lucru se poate face folosind adnotarea @BeforeClass
@BeforeClass public static void Method_Name () {// codul de configurare a clasei aici}
O singură dată se dărâmă
- Similar cu configurarea o singură dată, este disponibilă și o metodă de curățare o singură dată. Se execută după toate metodele de testare a cazului și după ce adnotările au fost executate.
- Este util pentru oprirea serverelor, închiderea legăturilor de comunicare etc.
- Acest lucru se poate face folosind adnotarea @AfterClass
@AfterClass public static void Method_Name (){// codul de curățare a clasei aici}
JUnit Test Suites
Dacă vrem să executăm mai multe teste într-o ordine specificată, se poate face prin combinarea tuturor testelor într-un singur loc. Acest loc este numit ca suitele de testare. Mai multe detalii despre cum să executați suitele de testare și cum este utilizată în JUnit vor fi tratate în acest tutorial.
Junit Test Runner
JUnit oferă un instrument pentru executarea cazurilor de testare.
- Clasa JUnitCore este utilizată pentru a executa aceste teste.
- O metodă numită runClasses furnizată de org.junit.runner.JUnitCore, este utilizată pentru a rula una sau mai multe clase de testare.
- Tipul de returnare al acestei metode este obiectul Result ( org.junit.runner.Result ), care este utilizat pentru a accesa informații despre teste. Vedeți următorul exemplu de cod pentru mai multă claritate.
public class Test {public static main main (String [] args) {Rezultatul rezultatului = JUnitCore.runClasses (CreateAndSetName.class);pentru (Eșec de eșec: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}
În codul de mai sus obiectul „rezultat” este procesat pentru a obține eșecuri și rezultate reușite ale cazurilor de test pe care le executăm.
Primul program JUnit
Cunoașterea corectă a SDLC, programarea Java și elementele de bază ale procesului de testare software ajută la înțelegerea programului JUnit.
Să înțelegem testarea unitară folosind un exemplu live. Trebuie să creăm o clasă de testare cu o metodă de testare adnotată cu @Test așa cum este prezentat mai jos:
MyFirstClassTest.java
pachet guru99.JUnit;import static org.JUnit.Assert. *;import org.JUnit.Test;public class MyFirstClassTest {@Testpublic void myFirstMethod () {String str = "JUnit funcționează bine";assertEquals ("JUnit funcționează bine", str);}}
TestRunner.java
Pentru a executa metoda noastră de testare (de mai sus), trebuie să creăm un test runner. În test runner trebuie să adăugăm clasa test ca parametru în metoda JUnitCore runclasses (). Acesta va returna rezultatul testului, în funcție de faptul dacă testul este trecut sau nu.
Pentru mai multe detalii despre acest lucru, consultați codul de mai jos:
pachet guru99.JUnit;import org.JUnit.runner.JUnitCore;import org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;clasă publică TestRunner {public static main main (String [] args) {Rezultatul rezultatului = JUnitCore.runClasses (MyFirstClassTest.class);pentru (Eșec de eșec: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Result ==" + result.wasSuccessed ());}}
Ieșire
Odată ce TestRunner.java execută metodele noastre de testare, obținem rezultate ca fiind eșuate sau trecute. Vă rugăm să găsiți mai jos explicația de ieșire:
- În acest exemplu, după executarea MyFirstClassTest.java , testul este trecut și rezultatul este în verde.
- Dacă ar fi eșuat, ar fi trebuit să arate rezultatul ca roșu și eșecul poate fi observat în urma eșecului. Vezi mai jos JUnit gui:
Rezumat :
- JUnit este un cadru care acceptă mai multe adnotări pentru a identifica o metodă care conține un test.
- JUnit oferă o adnotare numită @Test, care îi spune lui JUnit că metoda de vid public în care este utilizată poate rula ca un caz de testare.
- Un dispozitiv de testare este un context în care rulează un caz de testare
- Pentru a executa mai multe teste într-o ordine specificată, se poate face prin combinarea tuturor testelor într-un singur loc. Acest loc este numit ca suitele de testare.
- JUnit oferă un instrument pentru executarea testelor în care putem rula cazurile noastre de testare denumite Test Runner.