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
Other articles
Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA. Persistence cu JPA
Cum sa interogam Kafka Streaming Data?
Procrastinarea. Care sunt avantajele ei?
Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA
Procrastinarea
Cerinte. De ce avem nevoie de ele?
Dezvolta-ti abilitatile cu training-urile noastre
Programarea reactiva Java. Implementari
Testarea software. Intrebari tipice si raspunsuri. Continuare
Testarea software. Intrebari tipice si raspunsuri
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:
Piramida testelor arata in felul urmator:
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.
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:
Drept urmare, conceptul rezultat al JUnit 5 cuprinde 3 module:
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.
Catalin Tudose
Java and Web Technologies Expert
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:
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.
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:
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