PowerMockia ja Mockitoa käytetään molemmat pilkkaamiseen Javassa, mutta ne palvelevat erilaisia tarkoituksia ja niillä on selkeät piirteet, etenkin siinä, kuinka ne käsittelevät pilkkaamista vastaavien "MockMaker" -teoksiensa kautta.
PowerMockin MockMaker
PowerMock laajentaa muita pilkkakirjastoja, kuten EasyMock ja Mockito, tarjoamalla tehokkaampia ominaisuuksia. Se käyttää räätälöityjä luokkalataus- ja tavukoodin manipulointia staattisten menetelmien, rakentajien, lopullisten luokkien ja menetelmien, yksityisten menetelmien ja staattisten alustuslaitteiden poistamisen avulla [4] [9]. PowerMockin "MockMaker" toteuttaa PowerMockmaker "-luokka, joka delegoi tarvittaessa toiseen" MockMaker ": lle. Tämän avulla PowerMock voi työskennellä muiden pilkkauskehysten rinnalla ilman konflikteja, mikäli se on määritetty oikein [7].
Powermockin lähestymistapa on invasiivisempi, mikä vaatii tavukoodin manipulointia edistyneiden pilkkausominaisuuksien saavuttamiseksi. Tämä voi olla hyödyllistä monimutkaisissa skenaarioissa, joissa pelkästään Mockito ei ole riittävä, kuten staattisten menetelmien tai yksityisten menetelmien pilkkaaminen [9].
Mockiton Mock-Maker-INLINE
Mockiton "Mock-Maker-INLINE" on ominaisuus, joka mahdollistaa lopullisten luokkien ja -menetelmien pilkkaamisen. Se ei vaadi tavukoodin manipulointia, kuten PowerMock, vaan käyttää Java -instrumentointi -sovellusliittymää luokkien muokkaamiseen suorituksen aikana. Tämä lähestymistapa on vähemmän invasiivinen eikä tarvitse mukautettua luokkakuormainta [2] [8].
Jotta "Mock-Maker-INline" ottaa käyttöön, lisäät tyypillisesti tiedoston nimeltä `org.mockito.plugins.mockmaker` sisältöllä` Mock-Maker-INLINE` `src/test/resurssit/mockito-extensions` -hakemistossa. Vaihtoehtoisesti voit käyttää "Mockito-INLine" -esinettä, joka yksinkertaistaa prosessia, koska se ei vaadi "MockMaker" -tiedoston [2] [10] manuaalista kokoonpanoa.
Mockito 5.0.0- ja myöhemmät versiot käyttävät oletuskantajana oletuksena "Mock-Maker-INLINE", mikä helpottaa lopullisten luokkien ja -menetelmien pilkkaamista ilman lisäkonfiguraatiota [3] [10].
keskeiset erot
-Invasiivisuus: PowerMock on invasiivisempi, koska se käytti tavukoodin manipulointia ja räätälöityä luokkakuormainta, kun taas Mockiton "Mock-Maker-INLINE" käyttää Java-instrumentteja, mikä on vähemmän invasiivista.
- Kyky: PowerMock voi pilkata staattisia menetelmiä, rakentajia ja yksityisiä menetelmiä, joita Mockito ei voi tehdä ilman ylimääräisiä työkaluja, kuten "Mockito-INLINE" lopullisille luokille ja menetelmille.
-Kokoonpano: PowerMock vaatii erityisiä kokoonpanoja siirtämään muihin "MockMaker" -teoksiin, kun taas Mockiton "Mock-Maker-INLINE" voidaan ottaa käyttöön yksinkertaisella kokoonpanotiedostolla tai käyttämällä `mockito-inline` -esteenä.
-Oletuskäyttäytyminen: Mockito 5: ssä ja myöhemmin "Mock-Maker-INLINE" on oletus, kun taas PowerMock vaatii aina nimenomaisen asennuksen edistyneiden ominaisuuksiensa käyttämiseksi.
Yhteenvetona voidaan todeta, että vaikka sekä Powermockin että Mockiton "Mock-Maker-INLINE" parantavat pilkkaamisominaisuuksia, ne eroavat merkittävästi lähestymistapaansa, invasiivisuudestaan ja heidän tukemastaan pilkkaamisesta. PowerMock on tehokkaampi, mutta myös monimutkaisempi, kun taas Mockiton "Mock-Maker-INLINE" tarjoaa yksinkertaisemman tavan pilkata lopullisia luokkia ja menetelmiä.
Viittaukset:[1] https://github.com/powermock/powermock/wiki/mockito
[2] https://davidvlijmincx.com/posts/writing_higher_quality_tests_with_mockitos_inline_mock_maker/
.
[4] https://powermock.github.io
[5] https://javadoc.io/static/org.mockito/mockito-core/3.2.4/org/mockito/plugins/inlinemockmaker.html
.
.
[8] https://davidvlijmincx.com/posts/mockito_mock_final_methods_and_classes/
[9] https://stackoverflow.com/questions/6036450/powermock-mockito-vs-mockito-alone
.