Testarea programului, junit

JUnit este o bibliotecă pentru testarea unitară a programelor Java. Creat de Kent Beck și Eric Gamma, JUnit aparține familiei de cadre xUnit pentru diverse limbi de programare originare din Kent Beck Sunit for Smalltalk. JUnit a dat naștere unui ecosistem de extensii - JMock, EasyMock, DbUnit, HttpUnit și așa mai departe.

JUnit este un cadru Java pentru testare, adică testarea secțiunilor individuale de cod, cum ar fi metode sau clase. Experiența acumulată în lucrul cu JUnit este importantă în dezvoltarea conceptelor de testare software.

Proba de testare JUnit

Trebuie să utilizați JUnit

JUnit vă permite să verificați rapid faptul că codul funcționează. Dacă programul nu este destul de simplu și include mai multe clase și metode, este posibil să dureze mult timp pentru a le verifica. Firește, acest proces este mai bine automatizat. Utilizarea JUnit vă permite să verificați codul programului fără prea mult efort și nu durează prea mult.

Testarea unitară a clasei și a funcțiilor reprezintă un fel de documentație a ceea ce se așteaptă ca rezultat al implementării lor. Și nu doar documentația, ci documentația care poate verifica automat codul pentru respectarea funcțiilor prezentate. Acest lucru este convenabil și de multe ori testele sunt dezvoltate atât împreună, cât și înainte de implementarea clasei. Dezvoltarea prin testare este o tehnologie extrem de populară pentru crearea de software serios.

Tipurile de testare și de testare JUnit în clasificare

Software-ul de testare poate fi împărțit în două tipuri:

  • testarea cutiei negre;
  • testarea casetei albe.

În timpul testării programului ca o cutie neagră, structura internă a aplicației nu este luată în considerare. Tot ce contează este funcționalitatea pe care aplicația trebuie să o ofere. Când se testează programul ca o cutie albă, se ia în considerare o structură internă, adică clasă și metode. În plus, testarea poate fi împărțită în patru nivele:

  • teste unitare - testarea secțiunilor individuale de cod;
  • Testarea integrării - testarea interacțiunii și colaborării componentelor;
  • testarea sistemului - testarea întregului sistem în ansamblu;
  • Acceptarea testelor - testarea finală a sistemului finit de conformitate.

Testarea unității prin definiție este un test cutie albă.

Testarea unităților este utilizată în două versiuni - JUnit 3 și JUnit 4. Să luăm în considerare ambele versiuni, la fel ca și în proiectele vechi, este încă utilizată cea de-a treia versiune, care suportă Java 1.4.

Pentru a crea un test ar trebui să moștenească o clasa de test testcase, suprascrie și teardown metode de configurare, dacă este necesar, bine și cel mai important - pentru a dezvolta metode de testare, numele pe care trebuie să înceapă cu „test“ abbriviatury. La rularea testului, creați mai întâi o instanță a clasei de test (pentru fiecare test într-o instanță de clasă separată a clasei), apoi se execută metoda de configurare, executați testul în sine, bine, și în cele din urmă se execută metoda teardown. Dacă oricare dintre metode aruncă o excepție, se consideră că încercarea a eșuat.

Notă. metodele de testare trebuie să fie publice, nu pot fi statice.

Testele constau în executarea unor coduri și verificări. Verificările sunt cele mai des efectuate cu ajutorul clasei Assert, deși uneori utilizează cuvântul cheie assert.

De exemplu, luați în considerare un utilitar pentru lucrul cu șiruri de caractere, inclusiv metode de verificare a unui șir gol și reprezentând o secvență de octeți sub forma unui șir hexagonal:

Caracteristici suplimentare, TestSuite

JUnit 3 are câteva caracteristici suplimentare. De exemplu, puteți grupa testele. Pentru a face acest lucru, trebuie să utilizați clasa TestSuite:

Puteți repeta testul de mai multe ori. Pentru aceasta, folosiți RepeatedTest:

Moștenind clasa de test din ExceptionTestCase, puteți testa codul pentru a arunca o excepție:

După cum puteți vedea din exemple, totul este simplu și nimic inutil - codul minim pentru testarea JUnit.

JUnit 4 adaugă suport pentru funcții noi din Java 5.0; Testele pot fi declarate folosind adnotări. În acest caz, există o compatibilitate înapoi cu versiunea anterioară a cadrului. Aproape toate exemplele de mai sus vor funcționa în JUnit 4, cu excepția RepeatedTest, care nu se află în noua versiune.

Ce schimbări s-au făcut la JUnit 4? Luați în considerare același exemplu, dar cu utilizarea de noi caracteristici:

Ce sa schimbat în JUnit 4?

  • Pentru simplitate, puteți moșteni din clasa Assert. deși acest lucru nu este necesar.
  • Adnotare @ Înainte de a indica metodele care vor fi solicitate înainte de efectuarea testelor. Metodele trebuie să fie publice. Există de obicei presetări plasate pentru test, în cazul nostru este generarea datelor de test (metoda setUpToHexStringData).
  • Puteți utiliza adnotarea @BeforeClass. care denotă metodele care vor fi numite înainte de crearea instanței clasei de test; metodele trebuie să fie anulate statice publice. Această adnotare (metodă) are sens să fie utilizată pentru testare atunci când clasa conține mai multe teste care folosesc presetări diferite sau când mai multe teste utilizează aceleași date pentru a nu pierde timpul creând-le pentru fiecare test.
  • @ După adnotare desemnează metodele care vor fi solicitate după executarea testelor. Metodele trebuie să fie publice. Iată operațiile de eliberare a resurselor după testare; în cazul nostru - curățarea datelor de testare (metoda tearDownToHexStringData).
  • @AfterClass este legat în sensul cu @BeforeClass. dar efectuează metodele după testarea clasei. Ca și în cazul lui @BeforeClass. metodele trebuie să fie anulate statice publice.
  • @Anotația de încercare indică metodele de testare. Ca și mai înainte, aceste metode trebuie să fie anulate publice. Iată verificările în sine. În plus, în această adnotare puteți utiliza doi parametri, se așteaptă - setează excepția și intervalul de așteptare așteptat - specifică timpul după care testul este considerat că nu a reușit.

Exemple de utilizare a adnotărilor cu parametri, JUnit Test:

Dacă ignorați executarea testului, ignorați JUnit

Dacă unul dintre testele din motive serioase trebuie dezactivat, de exemplu, testul nu reușește în mod constant. Corecția testului poate fi amânată până la viitorul luminos prin adnotarea @Ignore. Dacă plasați această adnotare pe o clasă, atunci toate testele din această clasă vor fi dezactivate.

Reguli de testare, Regula JUnit

JUnit vă permite să utilizați reguli definite de dezvoltator înainte și după testare, care extind funcționalitatea. De exemplu, există reguli încorporate pentru setarea unui timeout pentru un test (Timeout), pentru setarea ExpectedException, pentru lucrul cu fișiere temporare (TemporaryFolder) etc.

Suite de testare, JUnit Suite, SuiteClasses

Rularea testului poate fi configurată utilizând adnotarea @RunWith. Clasele de test care conțin metode de testare pot fi combinate în suite de testare (Suite). De exemplu, au fost create două clase de testare a obiectelor. TestFilter, TestConnect. Aceste două clase de test pot fi combinate într-o singură clasă de testare TestWidgets.java:

Pentru a configura testele care trebuie executate, utilizați adnotarea @SuiteClasses, care include clase de test.

Categorii Abstract

Adnotare, JUnit Parametrizată

Adnotarea Parametrizată vă permite să utilizați teste parametrizate. Pentru a face acest lucru, clasa de testare declară o metodă statică care returnează o listă de date care vor fi folosite ca argumente constructorului de clasă.

Parametrizarea metodei. Teorii.class, DatePoints, DataPoint, Teorie

Teoriile parametrizează metoda de testare, nu constructorul. Datele sunt marcate cu @ DataPoints și @ DataPoint. metoda de testare - folosind @ Theory. Un test care utilizează această funcție poate arăta astfel:

Ordine de execuție a testului

Dacă doriți să executați testul într-o anumită ordine, puteți utiliza adnotarea @FixMethodOrder (MethodSorters.NAME_ASCENDING) definită în JUnit 4.11. De exemplu:

În caz contrar, următoarele două abordări pot fi utilizate.

Articole similare