Powermocki Whitebox ja Mockito Whitebox on mõlemad utiliidi klassid, mida kasutatakse klasside sisemiste olekute juurdepääsuks ja manipuleerimiseks, kuid neil on eristuvad erinevused nende päritolu, funktsioonide ja kasutuskontekstide osas.
päritolu ja saadavus
- Mockito valgekast: see oli Mockito siseklass, mis võimaldas kasutajatel seada objektide sisemised olekud. Kuid see eemaldati Mockito 2.x -st, kuna muret halbade testimispraktikate propageerimisega ja kuna see polnud mõeldud avalikuks kasutamiseks [11]. Sellele tuginenud kasutajaid julgustati vahetama alternatiividele nagu Powermocki Whitebox või rakendama oma peegelduste utiliite [3].
- Powermocki valgekast: see on osa PowerMocki raamatukogust, mis laiendab Mockito võimalusi, võimaldades muu hulgas privaatseid, staatilisi ja lõplikke meetodeid pilkata [5]. Powermocki WhiteBox pakub testideks mõeldud lihtsustatud peegelduse utiliiti, võimaldades juurdepääsu eraviisilistele liikmetele ja privaatsete meetodite kutsumisele [2] [6].
funktsionaalsus
- Mockito WhiteBox (ajalooline): Enne selle eemaldamist võimaldas Mockito WhiteBox kasutajatel seada objektide sisemised olekud, kasutades selliseid meetodeid nagu "SetInternalState". See oli kasulik mõnitavate klassidesse ilma avalike setteriteta.
- Powermocki valgekast: pakub laiemat funktsioonide komplekti, sealhulgas:
- Privaatsetele liikmetele juurdepääs: sellised meetodid nagu `getInternalState` võimaldavad hankida eravälja väärtusi.
- Privaatsete meetodite kutsumine: meetod "invokeMethod" võib nimetada privaatseid meetodeid, sealhulgas staatilisi [4] [10].
- Privaatväljade seadistamine: Ehkki seda pole selgesõnaliselt dokumenteeritud, saab Powermocki valgekasti kasutada privaatsete väljade seadistamiseks peegelduse kaudu, ehkki see pole selle peamine eesmärk.
Kasutamise kontekst
- Mockito valgekast: kuna see pole Mockito 2.x -s enam saadaval, soovitatakse kasutajatel kasutada selliseid alternatiive nagu Powermocki Whitebox või Spring's `ReflectionTeSTUTILS", kui see on vajalik [1] [3].
- PowerMocki valgekast: tavaliselt kasutatakse stsenaariumide korral, kus on vaja otsene juurdepääs eraliikmetele või meetoditele, sageli pärandkoodis või keeruka loogika testimisel, mida ei saa hõlpsasti uuesti korraldada. Siiski on üldiselt soovitatav vältida selliste kommunaalteenuste kasutamist, kui see pole tingimata vajalik, kuna need võivad kapseldamisest mööda minna ja viia rabedate testideni [10].
Kokkuvõtlikult võib öelda, et kuigi mõlemad Whiteboxi utiliitid teenivad sarnaseid eesmärke, on Powermocki versioon põhjalikum ja laialdaselt kättesaadav, samas kui Mockito versioon eemaldati testimispraktikate mure tõttu. Powermocki Whitebox on võimas tööriist siseklassi olekute juurdepääsuks ja manipuleerimiseks, kuid seda tuleks kasutada mõistlikult.
Tsitaadid:]
]
]
[4] https://johnmullins.co
[5] https://www.calloftinc.com/blogs/unit-testing-mockito-powermockito.html
]
[7] https://github.com/mockito/mockito/issues/422
[8] https://www.alibabacloud.com/blog/598057
]
[10] https://github.com/powermock/powermock/wiki/bypass-capslation
[11] https://github.com/mockito/mockito/issues/489
[12] https://code.haleby.se/2017/02/03/a-case-for-powermock/