Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ar galiu naudoti „PowerMock“ su „Mockito 5“ ir „Mock-Maker-Inline“


Ar galiu naudoti „PowerMock“ su „Mockito 5“ ir „Mock-Maker-Inline“


Naudojant „PowerMock“ su „Mockito 5“ ir „Mock-Maker-Inline“ konfigūracija, yra techniškai įmanoma, tačiau apima tam tikrus aspektus dėl šių įrankių sąveikos būdo.

„PowerMock“ ir „Mockito“ suderinamumas

„PowerMock“ yra skirtas išplėsti tyčiojimosi sistemų, tokių kaip „Mockito“, galimybes išplėsti, leidžiant tyčiojant iš statinių metodų, galutinių klasių ir konstruktorių. Tačiau „PowerMock“ integracija su „Mockito“ pirmiausia orientuota į senesnes „Mockito“ versijas. „PowerMock“ versija 2.0.0 ir aukščiau palaiko „Mockito 2.x“, tačiau yra nedaug dokumentų apie jo suderinamumą su „Mockito 5.0.0“, kuriame pagal numatytuosius nustatymus naudojamas „modelio gamintojas-inline“ [1] [5].

„Mockito 5“ ir „Mock-Maker-Inline“

„Mockito 5.0.0“ pristato „modelio gamintoją-inliną“ kaip numatytąjį „tyčiuką“, įgalinančią tokias funkcijas kaip galutinės klasės ir statiniai metodai. Šis pakeitimas supaprastina sudėtingų klasių tyčiojimo procesą, palyginti su ankstesnėmis versijomis, kuriose reikėjo papildomos konfigūracijos ar priklausomybių [9] [10].

„PowerMock“ naudojimas su „Mock-Maker-Inline“

Kai naudojate „PowerMock“ kartu su „Mockito 5“, galite susidurti su problemomis dėl „PowerMock“ vidinio įgyvendinimo ir jo sąveikos su „Mockito“ „Mockmaker“. „PowerMock“ įgyvendina savo „Mockmaker“, kuris gali sukelti konfliktus, jei ir „PowerMock“, ir „Mockito“ bandys vienu metu naudoti skirtingus „makmaver“ įgyvendinimus [1] [2].

Norėdami naudoti „PowerMock“ su „Mockito 5“ ir „Mock-Maker-Inline“, jums paprastai reiktų sukonfigūruoti „PowerMock“, kad prireikus deleguotų savo tyčiojimosi operacijas „Mockito“ „Mock-Maker-Inlin“. Tačiau ši konfigūracija gali būti sudėtinga ir gali būti ne iki galo palaikoma ar dokumentuota visiems scenarijams.

konfigūracijos veiksmai

1. Įtraukite priklausomybes: įsitikinkite, kad į savo projektą turite teisingas „PowerMock“ ir „Mockito“ versijas. „PowerMock“ naudokite tokias versijas kaip „PowerMock-API-MOCKITO2“ ir „POWERMOCK-MODULE-JUNIT4“. „Mockito“ naudokite 5.0.0 ar naujesnę versiją [5] [9].

2. Tai gali apimti konfigūracijos failo nustatymą, skirtą „PowerMock“ tyčiojimosi operacijoms perduoti „Mockito“, kai naudojate „Mock-Maker-Inline“.

3. Testo sąranka: naudokite „@RunWith (PowerMockRunner.class)` ir `@Prepfortest“ anotacijos savo bandymo klasėse, kad įgalintumėte „PowerMock“ funkcijas.

4. Plaukimas: naudokite „Mockito“ daugumai tyčiojimosi užduočių ir jėgos, jei reikia, pavyzdžiui, statinio metodo tyčiojimasis, kai reikia.

Potencialūs klausimai

-Nesuderinamumas: paties „PowerMock“ „Mockmaker“ gali prieštarauti „Mockito“ „modelio gamintojui-inlinui“, todėl, jei jis nebus tinkamai sukonfigūruotas, be jokio nuspėjamo elgesio.
- Ribota dokumentacija: Yra ribotos rekomendacijos, kaip naudoti „PowerMock“ su „Mockito 5“, todėl gali tekti eksperimentuoti su skirtingomis konfigūracijomis.

Apibendrinant galima pasakyti, kad nors techniškai įmanoma naudoti „PowerMock“ su „Mockito 5“ ir „Mock-Maker-Inline“, tačiau sąranka gali būti sudėtinga ir gali reikalauti kruopštaus konfigūracijos, kad būtų išvengta konfliktų tarp dviejų rėmų. Patartina naudoti „Mockito 5“ įmontuotas funkcijas daugumai tyčiojančių poreikių ir rezervuoti „PowerMock“ konkrečiems scenarijams, kur reikalingos jo unikalios galimybės.

Citatos:
[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-thei-bject-creation-with-Mockito/
[4] https://stackoverflow.com/questions/6036450/powermock-mockito-vs-mockito-alone
[5] https://howtodoinjava.com/java/library/mock-testing-using-cowermock-with-junit-and-bockito/
[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-soble-to-use-mockito-with-kotlin-without-open-the-class/44284452
[9] https://www.infoq.com/news/2023/01/mockito-5/
[10] https://www.javacodegeeks.com/underve-mockito-core-vs-hockito-inline.html
[11] https://powermock.github.io