Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kā Powermock's Mockmaker atšķiras no Mockito izspēles-Maker-Inline


Kā Powermock's Mockmaker atšķiras no Mockito izspēles-Maker-Inline


Gan Powermock, gan Mockito tiek izmantoti ņirgāšanās Java, taču tie kalpo dažādiem mērķiem un tiem ir atšķirīgas iezīmes, it īpaši, kā viņi rīkojas ar ņirgāšanās, izmantojot savu attiecīgo “makemaker” ieviešanu.

Powermock makšķernieks

Powermock paplašina citas izspēles bibliotēkas, piemēram, Easymock un Mockito, nodrošinot jaudīgākas iespējas. Tas izmanto pielāgotu klases ielādētāju un manipulācijas ar bytecode, lai ļautu izsmiet statiskas metodes, konstruktorus, galīgās klases un metodes, privātās metodes un statisko inicializatoru noņemšanu [4] [9]. Powermock's `Mockmaker` tiek īstenota klase“ PowerMockMaker ”, kas, ja nepieciešams, delegē delegātu uz citu“ makšķernieku ”. Tas ļauj PowerMock strādāt kopā ar citiem ņirgāšanās ietvariem bez konfliktiem, ja tas ir pareizi konfigurēts [7].

Powermock pieeja ir invazīvāka, un tā prasa manipulācijas ar baitu kopulācijām, lai sasniegtu savas uzlabotās ņirgāšanās iespējas. Tas var būt izdevīgi sarežģītiem scenārijiem, kad tikai Mockito ir nepietiekams, piemēram, ņirgāšanās par statiskām metodēm vai privātām metodēm [9].

Mockito izspēles-Maker-Inline

Mockito's `Mock-Maker-Inline` ir ieviesta funkcija, kas ļauj izsmiet no galīgās klases un metodēm. Tas neprasa bytecode manipulācijas, piemēram, Powermock, bet tā vietā izmanto Java instrumentācijas API, lai modificētu klases izpildlaikā. Šī pieeja ir mazāk invazīva un tai nav nepieciešams pielāgots klases ielādētājs [2] [8].

Lai iespējotu `Mock-Maker-Inline`, jūs parasti pievienojat failu ar nosaukumu` org.mockito.plugins.mockmaker` ar saturu `Mock-Maker-innline` direktorijā` SRC/testa/resursi/Mockito-Extensions`. Alternatīvi, jūs varat izmantot artefaktu “Mockito-inline`, kas vienkāršo procesu, neprasot manuālu“ makeMaker ”paplašināšanas faila konfigurāciju [2] [10].

Mockito 5.0.0 un jaunākās versijās kā noklusējuma izspēles veidotāju tiek izmantots “Mock-Maker-inline”, padarot vieglāku galīgās klases un metodes bez papildu konfigurācijas [3] [10].

Galvenās atšķirības

-Invazivitāte: PowerMock ir vairāk invazīvāks, jo tā lieto manipulācijas ar bytecode un pielāgotu klases ielādētāju, savukārt Mockito's `Mock-Maker-Inline` izmanto Java instrumentāciju, kas ir mazāk invazīva.
- Iespējas: Powermock var izsmiet statiskas metodes, konstruktorus un privātas metodes, kuras Mockito nevar iztikt bez papildu rīkiem, piemēram, “Mockito-inline” galīgajām klasēm un metodēm.
-Konfigurācija: PowerMock nepieciešama īpaša konfigurācija, lai deleģētu citām “Mockmaker` ieviešanām, turpretim Mockito` Mock-Maker-inline` var iespējot ar vienkāršu konfigurācijas failu vai izmantojot “Mockito-innline” artefaktu.
-Noklusējuma uzvedība: Mockito 5 un vēlāk, “Mock-Maker-Inline` ir noklusējums, turpretī PowerMock vienmēr prasa skaidru iestatīšanu, lai izmantotu savas uzlabotās funkcijas.

Rezumējot, lai gan gan Powermock, gan Mockito `izspēles-Maker-Inline` uzlabo izsmiekla iespējas, tie ievērojami atšķiras pēc savas pieejas, invazivitātes un viņu atbalsta ņirgāšanās veidiem. Powermock ir jaudīgāks, bet arī sarežģītāks, turpretī Mockito's `Mock-Maker-Inline` piedāvā vienkāršāku veidu, kā izsmiet no galīgās nodarbībām un metodēm.

Atsauces:
[1] https://github.com/powermock/powermock/wiki/mockito
[2] https://davidvlijmincx.com/posts/writing_higher_quality_tests_with_mockitos_inline_mock_maker/
[3.]
[4] https://powermock.github.io
[5] https://javadoc.io/static/org.mockito/mockito-core/3.2.4/org/mockito/plugins/inlinemockmaker.html
[6] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.plugins.mockmaker
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.powermock.api.mockito.mockmaker.powermockmaker
[8] https://davidvlijmincx.com/posts/mockito_mock_final_methods_and_classes/
[9] https://stackoverflow.com/questions/6036450/powermock-mockito-vs-mockito-alone
[10] https://stackoverflow.com/questions/53274463/what-is-mockito-inline-and-how-does-it-work-to-mock-final-metods