Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuidas mõjutab sõltuvus PowerMockist üldist katsearhitektuuri võrreldes ainult Mockito kasutamisega


Kuidas mõjutab sõltuvus PowerMockist üldist katsearhitektuuri võrreldes ainult Mockito kasutamisega


Ainuüksi PowerMocki ja Mockito kasutamise valik mõjutab märkimisväärselt üldist testiarhitektuuri. Siin on üksikasjalik võrdlus selle kohta, kuidas need raamistikud mõjutavad testi seadistamist, keerukust, jõudlust ja disaini kaalutlusi:

Testi seadistamine ja keerukus

- Mockito: Mockito on suhteliselt kerge ja sirgjooneline seadistamine. See kasutab peamiselt dünaamilisi puhverserveriid ja baitkoodide genereerimise raamatukogusid, näiteks ByteBuddy, et luua pilkeobjekte. See lihtsus muudab selle sobivaks enamiku standardsete ühikute testimise stsenaariumide jaoks, keskendudes liideste või betoonklasside mittestaatilistele ja privaatsetele meetoditele [1] [4].

- PowerMock: Powermock tutvustab täiendavat keerukust, kuna see on võimeline pilkama staatilisi meetodeid, konstruktoreid, privaatseid meetodeid ja lõppklasse. See saavutab selle läbi baidiskoodiga manipuleerimise ja kohandatud klassilaadurite, mis võivad testi seadistamist keeruliseks muuta ja nõuda rohkem konfiguratsiooni [2] [6]. PowerMockit kasutatakse tavaliselt keerukamate stsenaariumide või pärandkoodibaaside jaoks, kus Mockito piirangud on takistused [4] [5].

jõudlus

- Mockito: Mockito on testide läbiviimisel üldiselt kiirem, kuna see ei hõlma baitkoodidega manipuleerimise peamist. See muudab selle sobivamaks suuremahulisteks testimiskeskkondadeks, kus kiirus on ülioluline [4].

- PowerMock: Powermocki baitkoodiga manipuleerimise kasutamine lisab pea kohal, muutes testid Mockitoga võrreldes aeglasemaks. See võib olla oluline puudus keskkonnas, kus testi täitmise kiirus on oluline [4] [6].

Kujunduse kaalutlused

- Mockito: julgustab häid disaini tavasid, piirates staatiliste meetodite ja privaatsete meetodite pilkamist. See sunnib arendajaid kavandama klasse, pidades silmas testitavust, põhjustades sageli puhtamat, modulaarsemat koodi [5] [8].

- PowerMock: Kuigi Powermock pakub võimsaid funktsioone keerukate stsenaariumide pilkamiseks, saab seda mõnikord kasutada kehva kujunduse karguna. See võimaldab arendajatel kapseldamisest ja testimiskoodist mööda minna, mis ei pruugi ühiku testimiseks hästi sobida, põhjustades potentsiaalselt vähem hooldatava koodi, kui seda ei kasutata mõistlikult [5] [8]. Kuid see on hindamatu pärandkoodi või kolmandate osapoolte raamatukogude jaoks, kus refraktorid pole teostamatud [5].

integreerimine teiste raamatukogudega

- Mockito: üldiselt integreerib hästi enamiku moodsate testimisseadetega, sealhulgas Junit, ilma oluliste konfliktideta [4].

- PowerMock: võib mõnikord vastuolus teiste raamatukogude või raamistike, näiteks kevadega, selle keeruka olemuse ja baitkoodidega manipuleerimise tõttu [4]. See nõuab sõltuvuste ja testide jooksjate hoolikat juhtimist.

Kasutamise juhtumid

- Kasutage mockitot, kui:
- Teie koodibaas ei sõltu suuresti staatilistest meetoditest.
- Esitate ühikutestide lihtsuse ja kiiruse eelistada.
- Eelistate kerget pilkamist ilma täiendavate sõltuvusteta.

- Kasutage Powermockit, kui:
- Peate pilkama staatilisi meetodeid, konstruktoreid või privaatseid meetodeid, eriti pärandkoodibaasides.
- Teie rakendus kasutab keerulisi staatilisi või lõppklasse, mida tuleb testida.
- Olete nõus võimsamate ja paindlikumate pilkavate võimaluste jaoks vahetama mõnda lihtsust ja kiirust [4].

Kokkuvõtlikult võib öelda, et kuigi Mockito sobib ideaalselt oma lihtsuse ja kiiruse tõttu standardsete ühikute testimise stsenaariumide jaoks, pakub PowerMock võimsamaid funktsioone keerukate või pärandkoodide jaoks, kuid suurenenud keerukuse ja aeglasema testi täitmise hinnaga. Nende vaheline valik peaks põhinema teie projekti konkreetsetel vajadustel ja kompromissidel, mida olete nõus tegema.

Tsitaadid:
]
[2] https://github.com/powermock/powermock
]
]
]
]
[7] https://www.calloftinc.com/blogs/unit-testing-mockito-powermockito.html
[8] https://lkrnac.net/blog/2014/01/using-powermock/
]