Migrarea de la JUnit 4 la JUnit 5: inlocuirea regulilor cu extension model.

JUnit 5 Jupiter este combinatia intre noul model de programare (annotations, classes, methods) si extension model pentru scrierea de teste si extensions in JUnit 5. Sub-proiectul Jupiter ofera un motor de testare pentru rularea testelor bazate pe Jupiter pe platforma. In contrast cu runners and rules extension points din JUnit 4, JUnit Jupiter extension model consta intr-un singur concept coerent: Extension API.

Dec 17, 2019 80
JUnit 5 Jupiter este combinatia intre noul model de programare (annotations, classes, methods) si extension model pentru scrierea de teste si extensions in JUnit 5. Sub-proiectul Jupiter ofera un motor de testare pentru rularea pe platforma a testelor bazate pe Jupiter. In contrast cu runners si rules extension points din JUnit 4, JUnit Jupiter extension model consta intr-un singur concept coerent: Extension API.

Reguli vs. extension model

O regula JUnit 4 este o componenta care intercepteaza test method calls si iti permite sa faci ceva inainte ca o test method sa fie rulata si inca ceva dupa ce test method a fost rulata. Acestea sunt specifice JUnit 4.

Din anumite puncte de vedere o regula este similara cu a avea @Before si @After annotations din JUnit 4 in test class. Dar, prin folosirea unei reguli, putem sa avem totul izolat intr-un loc si sa reutilizam codul de la mai multe test classes cu usurinta.

Pentru a adauga comportamente la testele care urmeaza sa fie executate, trebuie sa folosim @Rule annotation pe campurile TestRule. Acest lucru creste flexibilitatea testelor prin crearea de obiecte care pot sa fie utilizare si configurate in test methods.


Testing exceptions

Pentru a pune fata in fata modelul bazat pe reguli al JUnit 4 si extension model al JUnit 5, putem sa folosim clasa Calculator (listing 1). Este folosita pentru a executa operatii matematice. Suntem interesati sa testam metodele care ar putea sa genereze exceptii. O regula JUnit 4 este ExpectedException si va vom arata cum poate sa fie inlocuita cu JUnit 5 assertThrows method.


Listing 1 Clasa Calculator

Clasa Calculator.PNG

Logica care ar putea sa genereze exceptii in cadrul clasei Calculator poate sa faca urmatoarele:

  1. Declara o metoda de a calcula radacina patrata a unui numar (1). In cazul in care numarul este negativ, este generata si afisata o exceptie care contine un anumit mesaj (2).
  2. Declara o metoda de a imparti doua numere (3). In cazul in care cel de-al doilea numar este zero, este creata si afisata o exceptie care contine un anumit mesaj (4).

Listing 2 ofera un exemplu care specifica ce mesaj este asteptat in timpul executiei codului de testare folosind noua functionalitate a clasei Calculator.


Listing 2 JUnit4RuleExceptionTester class

JUnit4RuleExceptionTester class.PNG

In cadrul exemplului anterior cu JUnit 4, facem urmatoarele:

  1. Declaram un camp ExpectedException adnotat cu @Rule. Adnotarea @Rule trebuie sa fie aplicata fie pe un camp public non-static, fie printr-o metoda publica non-statica (1). Metoda factory ExpectedException.none() creeaza o ExpectedException neconfigurata.
  2. Initializam o instanta a clasei Calculator a carei functionalitate o testam (2).
  3. ExpectedException este configurata pentru a pastra tipul de exceptie (3) si mesajul (4), inainte de invocarea sqrt method at line (5).
  4. ExpectedException este configurata pentru a tine tipul de exceptie (6) si mesajul (7), inainte de a fi eliminate prin invocarea divide method at line (8).


In urmatorul articol discutam despre abordarea JUnit 5.

Vrei sa inveti mai multe despre aceasta tehnologie?

Descopera cursurile noastre.

Catalin Tudose
Java and Web Technologies Expert

Daca iti place acest articol, distribuie-l si prietenilor tai!




Luxoft Warsaw - Warsaw Spire, plac Europejski 1, 00-844 Warszawa
Dimitrie Pompeiu nr 5-7 , building C, Et. 5, sect 2, Bucharest, 014459

Contact phone:

021 371 4858
Luxoft Poland Wroclaw - Silver Tower pl. Konstytucji 3-go Maja 3 50-048 Wroclaw
Aleja Generała Tadeusza Bora-Komorowskiego 25, Quattro Business Park Five, 31-476 Kraków, Poland

Contact phone:

+48 122110650
Success
Iti multumim.
Inregistrarea ta a fost trimisa.