Arhitectura JUnit 5. Partea a sasea

Ultimul articol din seria noastra despre arhitectura JUnit 5. In acest ultim articol ne uitam la abordarea JUnit 5. Prin introducerea propriilor extensii JUnit 5 are functii similare cu regulile JUnit 4. Codul este mai concis si se bazeaza pe stilul adnotarilor declarative.

Jul 22, 2020 126
Ultimul articol din seria noastra despre arhitectura JUnit 5. In acest ultim articol ne uitam la abordarea JUnit 5. Prin introducerea propriilor extensii JUnit 5 are functii similare cu regulile JUnit 4. Codul este mai concis si se bazeaza pe stilul adnotarilor declarative. In primul rand definim clasa CustomExtension, care este folosita ca argument al adnotarii @ExtendWith pe clasa testata.

The CustomExtension class.JPG


In listarea 9, facem urmatoarele lucruri:
  1. Declaram CustomExtension ca implementand interfetele AfterEachCallback si BeforeEachCallback (1’).
  2. Trecem peste metoda afterEach, care urmeaza sa fie executata dupa fiecare metoda de testare din clasa de testare care este extinsa cu CustomExtension (2’).
  3. Trecem peste metoda beforeEach care urmeaza sa fie executata dupa fiecare metoda de testare din clasa de testare care este extinsa cu CustomExtension (3’).

The JUnit5CustomExtensionTester class.JPG


In listarea 10, facem urmatoarele lucruri:
  1. Extindem JUnit5CustomExtensionTester cu clasa CustomExtension (1’).
  2. Extindem metoda myCustomRuleTest si o adnotam cu @Test (2).

Cand clasa de test este extinsa cu clasa CustomExtension, metodele beforeEach si afterEach definite anterior sunt executate inainte si dupa fiecare metoda de testare.

Putem sa observam cu usurinta diferentele intre claritatea si lungimea codului la JUnit 4 in comparatie cu JUnit 5. Abordarea JUnit 4 ne obliga sa lucram cu 3 clase, in timp ce in abordarea JUnit 5 lucram doar cu 2 clase. Codul care trebuie sa fie executat inainte si dupa fiecare metoda de testare este izolat intr-o metoda dedicata cu un nume clar. Legat de clasa de testare, nu trebuie sa facem altceva decat sa o adnotam cu @ExtendWith.

JUnit 5 extension model poate sa fie folosit pentru a inlocui gradual runners din JUnit 4. Pentru extensiile care au fost deja create, procesul de migrare este simplu. Spre exemplu:

  • Pentru a migra testele Mockito, trebuie sa inlocuim, in clasa testata, adnotarea @RunWith(MockitoJUnitRunner.class) cu adnotarea @ExtendWith(MockitoExtension.class).
  • Pentru a migra testele Spring, trebuie sa inlocuim, in clasa testata, adnotarea @RunWith(SpringJUnit4ClassRunner.class) cu adnotarea @ExtendWith(SpringExtension.class).
  • In momentul scrierii acestui articol, nu exista extensie pentru testele Arquillian.

Concluzii

In cadrul acestei serii am discutat despre noua arhitectura JUnit 5 si motivul pentru care a aparut. Am evidentiat abordarea modularea a JUnit 5. De asemenea am aratat si cum sa migram codul de la JUnit 4 la JUnit 5: migrarea de la reguli la extensii, migrarea de la reguli personalizate la extensii personalizate.

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.