Migrarea de la JUnit 4 la JUnit 5: implementare, dependencies, adnotari. Partea a treia
Migrarea de la JUnit 4 la JUnit 5: implementare, dependencies, adnotari. Partea a treia
Ultimul articol din seria noastra despre migrarea de la JUnit 4 la JUnit 5 (implementare, dependencies, annotations). Astazi vom analiza migrarea efectiva.
24 Aug 2020
653
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
4. Migrare
Vom incepe demonstratia cu o clasa care simuleaza un sistem aflat in test (system under test - SUT). Aceasta clasa poate sa fie initializata, poate sa primeasca sarcini pe care sa le execute regulat dar nu poate sa primeasca sarcini aditionale pe care sa le execute, si se poate inchide.
Fig 4 Tested SUT class
Figura 5 verifica functionalitatea SUT folosind functionalitatile oferite de JUnit 4 si figura 6 le verifica folosind JUnit 5. Aceste exemple arata si ciclul de viata al acestor metode. Dupa cum spuneam anterior, sistemul poate sa porneasca, sa primesca sarcini regulate si aditionale, si se poate inchide singur. Ciclul de viata si metodele de testare JUnit 4 si JUnit 5 asigura faptul ca sistemul se initializeaza si apoi se inchide inainte si dupa fiecare test. Metodele de testare verifica daca acesta poate sa primeasca sarcini in mod regulat sau sarcini aditionale.
Figura 5 JUnit4SUTTest class
Am inlocuit anterior JUnit 4 dependency cu JUnit Vintage dependency. Rezultatul rularii JUnit4SUTTest class este la fel in ambele cazuri (figura 7) si mySecondTest este marcat cu adnotarea @Ignore. Acum putem sa mergem mai departe cu migrarea efectiva a adnotarilor, claselor si metodelor.

Fig. 7 Rularea JUnit4SUTTestSuite in IntelliJ folosind atat JUnit 4 dependency cat si JUnit Vintage dependency
Figura 8 JUnit5SUTTest class
Comparand cele 2 metode putem observa urmatoarele lucruri:
- Metodele adnotate cu @BeforeClass (#1 in figura 5) si @BeforeAll (#1 in figura 6) sunt executate odata, inainte de toate testele. Aceste metode trebuie sa fie statice. In versiunea JUnit 4, metodele trebuie sa fie si publice. In versiunea JUnit 5, putem sa facem metodele nonstatice si sa adnotam intreaga test class cu @TestInstance(Life cycle.PER_CLASS).
- Metodele adnotate cu @AfterClass (#2 in fig 5) si @AfterAll (#2′ in figura 6) sunt executate o data dupa toate testele. Aceste metode trebuie sa fie statice. In versiunea JUnit 4, metodele trebuie sa fie si publice. In versiunea JUnit 5, putem sa facem metodele nonstatice si sa adnotam intreaga test class cu @TestInstance(Life cycle.PER_CLASS).
- Metodele adnotate cu @Before (#3 in figura 5) si @BeforeEach (#3′ in figura 6) sunt executate inainte de fiecare test. In versiunea JUnit 4 metodele trebuie sa fie publice.
- Metodele adnotate cu @After (#4 in figura 5) and @AfterEach (#4′ in figura 6) sunt executate dupa fiecare test. In versiunea JUnit 4 metodele trebuie sa fie publice.
- Metodele adnotate cu @Test (#5 in figura 5) si @Test (#5′ in figura 6) sunt executate independent. In versiunea JUnit 4 metodele trebuie sa fie publice. Cele doua adnotari apartin de diferite pachete: org.junit.Test si org.junit.jupiter.api.Test.
Nivelul de acces a fost relaxat pentru test methods, de la public la package-private. Aceste metode sunt accesate doar din cadrul pachetului de care apartine test class, asa ca nu trebuie sa fie facute publice.
Concluzii
In cadrul acestui articol am discutat despre pasii necesari pentru a migra de la JUnit 4 la JUnit 5: inlocuirea dependencies, inlocuirea adnotarilor, inlocuirea testing classes si metode. JUnit 4 este utilizat in continuare si va fi utilizat si in viitor, deoarece exista un volum mare de teste deja scrise. Dar este bine sa incepem sa migram usor codul nostru catre abordarea JUnit 5.This article has demonstrated the steps needed by the migration from JUnit 4 to JUnit 5 and summarizing them into a guiding table: replace the dependencies, replace the annotations, replace the testing classes and methods. JUnit 4 is and will still be in use, because there is a large amount of already written tests. You may consider slowly migrating your code to the new JUnit 5 approach.
Vrei sa inveti mai multe despre aceasta tehnologie? Descopera cursurile noastre.
Catalin Tudose
Java and Web Technologies Expert