Arhitectura JUnit 5. Partea a treia
In cel de-al treilea articol din seria noastra despre arhitectura JUnit 5 analizam rules vs extension model. Lectura placuta.
Jun 10, 2020 246
Alte articole
Test Driven Development cu JUnit 5. Partea a sasea
Test Driven Development cu JUnit 5. Partea a cincea
Test Driven Development cu JUnit 5. Partea a patra
Test Driven Development cu JUnit 5. Partea a treia
Test Driven Development cu JUnit 5. Partea a doua.
Cum sa te pregatesti pentru certificarile IIBA. Provocari si solutii
Test Driven Development cu JUnit 5
Testarea aplicatiilor cu JUnit 5 si Mockito. Partea doua
Testarea aplicatiilor cu JUnit 5 si Mockito. Prima parte
Testarea aplicatiilor cu JUnit5 si JMock 2. Partea a doua
6. Rules vs extension model
Pentru a putea pune fata in fata modelul bazat pe reguli din JUnit 4 si extension model din JUnit 5, folosim clasa Calculator (imagine 1). Clasa este utila pentru operatii matematice si in mod specific suntem interesati sa testam metodele care ar putea sa genereze exceptii. O regula este ExpectedException care poate sa fie inlocuita cu usurinta cu metoda JUnit 5 assertThrows.
Logica care ar putea sa genereze exceptii in cadrul clasei Calculator ar avea urmatorii pasi:
- Declaram o metoda de a calcula radacina patrata a unui numar (1). Daca numarul este negativ, o exceptie care contine un anumit mesaj este creata si afisata (2).
- Declaram o metoda prin care impartim doua numere (3). Daca cel de-al doilea numar este zero, o exceptie care contine un anumit mesaj este creata si afisata (4).
Lista 2 arata un exemplu care specifica ce mesaj legat de exceptie poate sa apara in timpul executiei codului de test folosind noua functionalitate a clasei Calculator de mai sus.
In exemplul anterior JUnit 4, facem urmatoarele lucruri:
- Declaram un camp ExpectedException adnotat cu @Rule. Adnotarea @Rule trebuie sa fie aplicata fie pe un camp public non-static, fie pe o metoda publica non-statica (1). Metoda factory ExpectedException.none() creaza o ExpectedException neconfigurata.
- Initializam o instanta a clasei Calculator a carei functionalitate o testam (2).
- ExpectedException este configurata pentru a pastra tipul exceptiei (3) si mesajul (4), inainte de a fi eliminata prin invocarea metodei sqrt (5).
- ExpectedException este configurata pentru a pastra tipul exceptiei (6) si mesajul (7), inainte de a fi eliminata prin invocarea metodei divide(8).
Vrei sa inveti mai multe despre aceasta tehnologie? Descopera cursurile noastre.
Catalin Tudose
Java and Web Technologies Expert