JUnit 5 – O noua arhitectura, functionalitati noi

JUnit 5 – O noua arhitectura, functionalitati noi

Abstract: JUnit este un unit testing training framework pentru limbajul de programare Java. Versiunea Junit 5 a fost reconceputa pentru a rezolva anumite probleme specifice versiunilor anterioare. Noua versiune vine cu un concept nou, cu posibilitatea de a crea o ierarhie a testelor nested, cu noi capacitati de assertions si assumptions, cu teste dinamice si parametrizate.
17 Dec 2018 1262
Acest articol se doreste a fi o scurta introducere in JUnit 5 – in special noile sale functionalitati – pentru a intelege si explora mai bine aceasta solutie.

Abstract: JUnit este un unit testing training framework pentru limbajul de programare Java. Versiunea Junit 5 a fost reconceputa pentru a rezolva anumite probleme specifice versiunilor anterioare. Noua versiune vine cu un concept nou, cu posibilitatea de a crea o ierarhie a testelor nested, cu noi capacitati de assertions si assumptions, cu teste dinamice si parametrizate.

1. Ce este JUnit? Ce este TDD?

JUnit, ca un unit testing training framework pentru limbajul de programare Java, este un instrument foarte important pentru abordarea TDD (test driven development). Aceasta face parte dintr-o familie de unit testing frameworks, denumite colectiv xUnit, avand ca origine SUnit.

JUnit este conectat ca un JAR la timpul de compilare si este cea mai frecventa biblioteca externa inclusa in proiectele Java.

TDD este un proces de dezvoltare software care se bazeaza pe repetarea unui ciclu de dezvoltare foarte scurt. In primul rand, cerintele sunt transformate in cazuri specifice de testare, apoi, software-ul este imbunatatit pentru a trece doar noile teste.
Acest lucru se opune dezvoltarii de software care permite adaugarea de software care dovedeste ca indeplineste cerintele.

Avantajele TDD includ:

  • Programatorul are obiective clare
  • Codul este mai sigur
  • Codul incorect poate fi izolat
  • Functiile noi pot fi usor introduse
  • Testele documenteaza aplicatia

Piramida testelor arata in felul urmator:

test_piramid.png


cu accentul discutiei noastre la nivelul testelor unitare. Intr-un scenariu real, dezvoltatorul poate fi responsabil cu unit testing, component testing, integration testing, behavior driven testing..

2. Dezavantajele JUnit 4

JUnit 4, asa cum a fost scos pe piata in 2006, oferea un concept simplu si monolitic.

jar_file.png


Toate functiile sale sunt concentrate intr-un singur fisier JAR. In ciuda simplitatii sale aparente, a generat o serie de probleme care erau din ce in ce mai grave pe masura ce timpul trecea.

Faptul ca API-ul furnizat nu a fost flexibil, a facut ca IDE-urile si instrumentele care utilizeaza JUnit sa fie strans legate de acesta. Aceste instrumente au trebuit sa mearga in interiorul claselor JUnit si chiar sa utilizeze reflectia pentru a obtine informatiile necesare.

Astfel, deoarece acelasi JAR unic a fost folosit de toata lumea si toate instrumentele si IDE-urile au fost atat de strâns legate de el, posibilitatile de evolutie ale JUnit au fost reduse in mod serios. Schimbarea oricarei variabile sau metode private ar fi putut sa-i incurce pe utilizatori. Un nou API, conceput pentru astfel de instrumente si un nou concept au rezultat ca o imbunatatire viitoare necesara.

3. Noua abordare modulara

O noua abordare, una modulara, a fost necesara pentru a permite evolutia JUnit. Separarea logica a preocuparilor necesita:

  • Un API care sa scrie teste, dedicat in special dezvoltatorilor
  • Un mecanism pentru descoperirea si redarea testelor
  • Si un API care sa permita interactiunea cu usurinta cu IDE-urile si instrumentele si care sa permita redarea testelor de la acestea

Drept urmare, conceptul rezultat al JUnit 5 cuprinde 3 module:

junit_5_architecture.png


Platforma JUnit, care serveste ca baza pentru lansarea cadrelor de testare pe JVM. De asemenea, ofera un API pentru a lansa teste de la console, IDE-uri sau instrumente de construire.

JUnit Jupiter este combinatia dintre noul model de programare si modelul de extensie pentru scrierea testelor si a extensiilor in JUnit 5. Numele a fost ales de la cea de-a 5-a planeta a sistemului nostru solar, care este si cea mai mare.

JUnit Vintage ofera un motor de testare pentru redarea testelor bazate pe JUnit 3 si JUnit 4 in platforma, asigurand compatibilitatea necesara.

Sunteti interesati sa invatati cum sa lucrati cu aceasta tehnologie? Descoperiti training-ul nostru JUnit Testing.



Catalin Tudose
Java and Web Technologies Expert

Share the knowledge

Mai ai intrebari?
Contacteaza-ne.
Thank you!
The form has been submitted successfully.