Powermockit ja Mockitot kasutatakse mõlemad Java -s pilkamiseks, kuid need teenivad erinevaid eesmärke ja neil on erinevad omadused, eriti selles, kuidas nad vastavate mockmakeri rakenduste kaudu pilkavad.
Powermocki mockmaker
PowerMock laiendab teisi pilkeraamatukogusid nagu Easymock ja Mockito, pakkudes võimsamaid võimalusi. See kasutab kohandatud klassilaaduri ja baitkoodiga manipuleerimist, et võimaldada staatiliste meetodite, konstruktorite, lõppklasside ja meetodite, privaatsete meetodite ja staatiliste initsiaatorite eemaldamise pilkamist [4] [9]. PowerMocki `Mockmaker" rakendab klass PowerMockmaker ", mis vajadusel helistab teisele" mockmakerile ". See võimaldab PowerMockil töötada koos muude mõnitavate raamistike kõrval ilma konfliktideta, kui see on õigesti konfigureeritud [7].
PowerMocki lähenemisviis on invasiivsem, nõudes oma täiustatud pilkamisvõimaluste saavutamiseks baitkoodidega manipuleerimist. See võib olla kasulik keerukate stsenaariumide korral, kus ainult Mockito on ebapiisav, näiteks staatiliste meetodite või privaatsete meetodite pilkamine [9].
Mockito Mock-Maker-inline
Mockito `Mock-Maker-inline` on funktsioon, mis on tutvustatud lõppklasside ja meetodite pilkamise võimaldamiseks. See ei nõua baitkoodidega manipuleerimist nagu Powermock, vaid kasutab selle asemel Java instrumentatsiooni API -d klasside muutmiseks käitusajal. See lähenemisviis on vähem invasiivne ega vaja kohandatud klassilaadurit [2] [8].
`Mock-Maker-inline'i’ 'lubamiseks lisate tavaliselt faili nimega `org.mockito.plugins.mockmaker` koos sisuga" Myck-Maker-Inline "kataloogis SRC/test/ressursid/mockito-laiendused. Teise võimalusena saate kasutada artefakti `mockito-inline`, mis lihtsustab protsessi, kui ei nõua laiendusfaili" Mockmaker "käsitsi konfiguratsiooni [2] [10].
Mockito 5.0.0 ja hilisemad versioonid kasutavad vaikimisi pilkude valmistajana `Mock-Maker-Inline'i", mis hõlbustab lõppklasside ja meetodite pilkamist ilma täiendava konfiguratsioonita [3] [10].
Peamised erinevused
-Invasiivsus: PowerMock on baitkoodiga manipuleerimise ja kohandatud klassilaaduri kasutamise tõttu invasiivsem, samal ajal kui Mockito "Mock-Maker-inline" kasutab Java-instrumenti, mis on vähem invasiivne.
- Võimalused: PowerMock saab mõnitada staatilisi meetodeid, konstruktoreid ja privaatseid meetodeid, mida Mockito ei saa teha ilma täiendavate tööriistadeta, näiteks "Mockito-inline" lõppklasside ja meetodite jaoks.
-Konfiguratsioon: PowerMock nõuab konkreetset konfiguratsiooni, et delegeerida muudele mockmaker-rakendustele, samas kui Mockito `Mock-Maker-Inline'i" saab lubada lihtsa konfiguratsioonifailiga või kasutades artefakti "Mockito-inline".
-Vaikekäitumine: Mockito 5-s ja hiljem on vaikimisi mock-valmistaja-inline, samas kui PowerMock nõuab oma täiustatud funktsioonide kasutamiseks alati selget seadistust.
Kokkuvõtlikult võib öelda, et kuigi nii PowerMocki kui ka Mockito `Mock-Maker-Inline'i suurendavad pilkamisvõimalusi, erinevad nad oma lähenemisviisi, invasiivsuse ja nende toetavate pilkavate tüüpide poolest märkimisväärselt. Powermock on võimsam, aga ka keerukam, samas kui Mockito "Mock-Maker-Inline" pakub lihtsamat viisi lõppklasside ja meetodite pilkamiseks.
Tsitaadid:[1] https://github.com/powermock/powermock/wiki/mockito
]
]
[4] https://powermock.github.io
[5] https://javadoc.io/static/org.mockito/mockito-core/3.2.4/org/mockito/plugins/inlinemockmaker.html
]
]
]
]
]