PowerMock ar Mockito 5 un “Mock-Maker-inline” konfigurācijas izmantošanu ir tehniski iespējama, taču tie ir saistīti ar dažiem apsvērumiem, pateicoties šiem rīkiem.
Powermock un Mockito saderība
PowerMock ir paredzēts, lai paplašinātu tādu ņirgāšanās ietvaru kā Mockito iespējas, ļaujot izsmiet statiskās metodes, galīgās klases un konstruktorus. Tomēr Powermock integrācija ar Mockito galvenokārt ir vērsta uz vecākām Mockito versijām. PowerMock versija 2.0.0 un augstāk atbalsta Mockito 2.x, taču ir ierobežota dokumentācija par tā savietojamību ar Mockito 5.0.0, kurā pēc noklusējuma tiek izmantots “Mock-Maker-inline” [1] [5].
Mockito 5 un `Mock-Maker-Inline`
Mockito 5.0.0 iepazīstina ar `Mock-Maker-inline` kā noklusējuma` Mockmaker`, ļaujot izspiest galīgās klases un statiskas metodes ārpus kastes. Šīs izmaiņas vienkāršo sarežģītu klašu ņirgāšanās procesu, salīdzinot ar iepriekšējām versijām, kur bija nepieciešama papildu konfigurācija vai atkarības [9] [10].
Izmantojot PowerMock ar `Mock-Maker-Inline`
Izmantojot PowerMock līdzās Mockito 5, jūs varētu saskarties ar problēmām, kas saistītas ar Powermock iekšējo ieviešanu un tā mijiedarbību ar Mockito's `Mockmaker`. Powermock ievieš savu `make veidotāju, kas var izraisīt konfliktus, ja gan Powermock, gan Mockito mēģina vienlaikus izmantot dažādas“ makšķernieka ieviešanas [1] [2].
Lai izmantotu PowerMock ar Mockito 5 un `Mock-Maker-inline`, jums parasti būtu jākonfigurē Powermock, lai deleģētu tās ņirgāšanās operācijas Mockito's` Mock-Maker-in-Inline` vajadzības gadījumā. Tomēr šī konfigurācija var būt sarežģīta, un tā var nebūt pilnībā atbalstīta vai dokumentēta visiem scenārijiem.
konfigurācijas darbības
1. Iekļaujiet atkarības: pārliecinieties, vai jūsu projektā ir pareizas Powermock un Mockito versijas. PowerMock izmantojiet tādas versijas kā `PowerMock-api-mockito2` un` PowerMock-Module-Junit4`. Mockito izmantojiet versiju 5.0.0 vai jaunāku [5] [9].
2. Konfigurējiet PowerMock: Jums, iespējams, būs jākonfigurē Powermock, lai strādātu ar Mockito's `Mock-Maker-Inline`. Tas varētu ietvert konfigurācijas faila iestatīšanu, lai deleģētu Powermock ņirgāšanās operācijas uz Mockito, izmantojot `Mock-Maker-Inline`.
3. Testa iestatīšana: izmantojiet `@Runwith (PowerMockRunner.class)` un `@prepeportest` anotācijas jūsu testa klasēs, lai nodrošinātu PowerMock funkcionalitāti.
4. ņirgāšanās: izmantojiet Mockito lielākajai daļai ņirgāšanās uzdevumu un Powermock, lai iegūtu īpašas funkcijas, piemēram, statiskās metodes ņirgāšanās, ja nepieciešams.
potenciālie jautājumi
-Nesaderība: Powermock paša `makemaker` varētu būt pretrunā ar Mockito's` Mock-Maker-Inline`, izraisot neparedzamu izturēšanos, ja tā nav pareizi konfigurēta.
- Ierobežota dokumentācija: Ir ierobežoti norādījumi par PowerMock izmantošanu ar Mockito 5, tāpēc jums, iespējams, būs jāeksperimentē ar dažādām konfigurācijām.
Rezumējot, lai gan tehniski ir iespējams izmantot Powermock ar Mockito 5 un “Mock-Maker-inline”, iestatīšana var būt sarežģīta un var prasīt rūpīgu konfigurāciju, lai izvairītos no konfliktiem starp diviem ietvariem. Ieteicams izmantot Mockito 5 iebūvētās funkcijas lielākajai daļai ņirgāšanās vajadzību un rezervēt Powermock konkrētiem scenārijiem, kur ir vajadzīgas tās unikālās iespējas.
Atsauces:[1] https://github.com/powermock/powermock/wiki/mockito
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.plugins.mockmaker
[3] https://rieckpil.de/mock-java-constructors-and-their-object-creation-with-mockito/
[4] https://stackoverflow.com/questions/6036450/powermock-mockito-vs-mockito-alone
[5] https://howtodoinjava.com/java/library/mock-testing-using-powermock-with-tiunit-and-mockito/
[6] https://groups.google.com/g/mockito/c/bly1pyabj94
[7] https://davidvlijmincx.com/posts/writing_higher_quality_tests_with_mockitos_inline_mock_maker/
[8] https://stackoverflow.com/questions/36536727/is-it-posibible-to-use-mockito-with-kotlin-without-open-the-class/44284452
[9] https://www.infoq.com/news/2023/01/mockito-5/
[10] https://www.javacodegeks.com/onstanding-mockito-core-vs-mockito-inline.html
[11] https://powermock.github.io