Noile adnotari si clase introduse in JUnit 5. Nested tests.

Noile adnotari si clase introduse in JUnit 5. Nested tests.

Cel de-al treilea articol din cadrul seriei noastre despre noile adnotari si clase introduse in JUnit 5. In acest articol vom discuta despre nested tests.
7 Oct 2020 652

3. Nested tests

O clasa interna este o clasa care face parte dintr-o alta clasa. Poate accesa orice variabila din instanta privata a clasei externe, ca parte din acea clasa externa. Un exemplu de use case tipic este atunci cand 2 clase sunt strans cuplate, si este logic sa oferim acces direct din cadrul celei interne catre toate variabilele instantei din cadrul celei externe.

Pe baza acestei idei, nested tests ofera celui care scrie testele mai multe optiuni de a exprima relatia dintre diferite grupuri de teste. Clasele interne pot sa fie package private.

Sa presupunem ca avem un program care se ocupa de clienti. Clientii au un gen, un prenume si un nume. Uneori, ar putea avea un al doilea prenume si o data la care au devenit clienti. Din moment ce anumiti parametri ar putea sau nu sa fie prezenti, inginerii folosesc builder pattern pentru a crea un client si pentru a testa un proces corect prin care un client este creat.

Fig 4 arata cum este folosita adnotarea @Nested in cadrul clasei NestedTestsTest. Clientul care este testat se numeste “John Michael Smith” (are un al doilea prenume) precum si o data la care a devenit client.

Nested Tests.JPG


Principalul test este NestedTestsTest (1) si este strans legat de nested test BuilderTest (2).

In primul rand, NestedTestsTest defineste prenumele si numele unui client care este folosit in cadrul tuturor nested tests (3).

Nested test cu numele, BuilderTest, verifica modul in care este construit obiectul Customer (4) cu ajutorul builder pattern (5). Verificarea egalitatii campurilor se face la finalul testului customerBuilder (6).

Vrei sa inveti mai multe despre aceasta tehnologie? Descopera cursurile noastre.

Catalin Tudose
Java and Web Technologies Expert

Share the knowledge

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