Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ar yra kokių nors atlikimo aspektų, kai plačiai naudojate „Mockito“ argumentų rungtynes


Ar yra kokių nors atlikimo aspektų, kai plačiai naudojate „Mockito“ argumentų rungtynes


Kai plačiai naudojama „Mockito“ argumentų atitikmenys, reikia atsiminti keletą veiklos aspektų. Nors „Mockito“ paprastai yra efektyvus, platus argumentų atitikmenų naudojimas gali pristatyti šiek tiek pridėtinių išlaidų dėl to, kaip „Mockito“ apdoroja šiuos atitikmenis.

1. MAŠINIMO PRODENCIJOS APDOROJIMAS **

- Argumentų atitikties vertinimas: Kai naudojate argumentų atitikmenis, tokius kaip „Eq ()“, „Any ()“ arba „AnyString ()“, „Mockito“ turi įvertinti šiuos rungtynes ​​vykdymo metu. Šis vertinimo procesas gali šiek tiek pridėti pridėtines išlaidas, palyginti su tiksliomis vertėmis tiesiogiai. Tačiau ši pridėtinė vertė paprastai būna nereikšminga, nebent jūs susiduriate su labai daugybe kvietimų ar sudėtingų žaidėjų.

2. Liudinimo derinio taisyklės **

- Visi argumentai turi naudoti atitikmenis: Jei vienam argumentui naudojate argumentų atitiktį, visuose argumentuose turi būti naudojami atitikmenys. Ši taisyklė gali sukelti daugiau žodžio kodo ir galbūt daugiau pridėtinės išlaidos, jei naudojate atitikmenis visiems argumentams, kai reikia tik tam tikros sąlygos. Pvz., Jei metodas turi tris parametrus ir norite naudoti „bet kokį ()“ vienam iš jų, taip pat turite naudoti ir kitų dviejų atitikmenis, net jei būtumėte galėję naudoti tikslias vertes.

3. Custom Matchers **

- Sudėtinga logika: Nors „Mockito“ teikia platų įmontuotų degalininkų asortimentą, gali tekti sukurti pasirinktinius atitikmenis konkrečiai logikai. Individualizuotos rungtynės gali būti labiau skaičiuojamos, jei jie apima sudėtingą logiką ar operacijas. Taip yra todėl, kad jiems reikia įdiegti „argumentMatcher“ sąsają ir apibrėžti „atitikties ()“ metodą, kuris gali atlikti savavališkus patikrinimus.

4. Patikrinimo pridėtinė vertė **

- Patikrinimas naudojant atitikmenis: Patikrinus sąveiką su MOCK objektais, naudojant „Patikrija ()“, „Mockito“ taip pat naudoja rungtynes, kad patikrintų, ar buvo perduoti teisingi argumentai. Panašiai kaip „Stubbing“, „Efrification“ su „Matchers“ gali pristatyti šiek tiek pridėtinių išlaidų, ypač jei tikrinate kelis skambučius su sudėtingais degalininkais.

5. Geriausia spektaklio praktika **

- Protingai naudokite specifiškumą: naudokite atitikmenis su tinkamu specifiškumo lygiu. Pvz., „Anyint ()“ yra mažiau specifinis ir greitesnis nei „Eq (4)“, tačiau naudojant „Eq (4)“, kai reikia patikrinti konkrečią vertę, yra tiksliau ir nedaro didelės įtakos našumui.
- Venkite nereikalingo sudėtingumo: venkite naudoti pasirinktinius rungtynes, nebent to būtina. Jei testui reikia sudėtingos logikos, kad būtų suderinti argumentai, apsvarstykite galimybę supaprastinti testą arba kūrybiškai naudoti esamus atitikmenis.
- Apibūdinkite savo testus: Jei bandymuose pastebite našumo problemas, profiliuokite juos, kad nustatytumėte kliūtis. Retai būna, kad „Mockito Matchers“ yra pagrindinė reikšmingų našumo problemų priežastis, tačiau visada gera patikrinti.

Apibendrinant galima pasakyti, kad nors „Mockito Argument Matchers“ pristato kai kurias pridėtines išlaidas, tai paprastai nėra svarbus rūpestis, nebent jūs susiduriate su ypač sudėtingais ar kritiniais testais. Testavimo kodekso lankstumas ir aiškumas naudojimo pranašumai paprastai viršija nedideles našumo išlaidas.

Citatos:
[1] https://stackoverflow.com/questions/56559146/junit-using-eq-argument-matcher-vs-pasing-string-directly/56572275
[2] https://www.digitalocean.com/community/tutorials/mockito-argument-matchers-Ant-eq
[3] https://kenkousen.substack.com/p/tales-from-the-jar-side-a-mockito
[4] https://www.softwaretestinghelp.com/mockito-matchers/
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://github.com/etorreborre/specs2/issues/854
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.additionalMatchers
[8] https://stackoverflow.com/questions/73046134/when-Should-iSe-argument-matcher-or-passing-argument-directly-when-Mockito-uni