Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuo „Mockito“ atstatymo metodas skiriasi nuo „ClearInvocations“


Kuo „Mockito“ atstatymo metodas skiriasi nuo „ClearInvocations“


„Mockito“ pateikia du metodus, kurie gali būti naudojami testavimo metu valdyti pavyzdžių būklę: „Reset () ir` ClearInvocations () “. Nors abu metodai naudojami norint valdyti modifikuotą būseną, jie tarnauja skirtingiems tikslams ir turi aiškų poveikį tyčiojimams.

„Mockito“ „Reset ()` metodas

„Reset ()“ metodas „Mockito“ yra naudojamas visiškai atkurti modelio objektą. Tai reiškia, kad tai ne tik išvalo kvietimų skaičių, bet ir pašalina bet kokį kankinantį, kuris buvo nustatytas pavyzdyje. Tai gali būti problematiška, nes reikia iš naujo pritvirtinti modelį, kai jį iš naujo nustatėte, jei norite išlaikyti konkretų savo testų elgesį. „Reset ()“ naudojimas paprastai yra atgrasomas, nes jis gali sukelti sudėtingus ir mažiau sufokusuotus testus. Rekomenduojama vengti naudoti `reset ()`, nebent būtina, nes tai gali užtemdyti jūsų testų ketinimus ir apsunkinti juos sunkiau išlaikyti [1] [5] [7].

„Mockito“ „ClearInvocations ()` metodas

„ClearInvocations ()` metodas, pristatytas „Mockito 2.1“, leidžia išvalyti pavyzdžio kvietimų skaičių, neatnaujinant jo kankinimo. Tai reiškia, kad galite ir toliau naudoti tuos pačius strypus, užtikrindami, kad kiekvienas testas prasidėtų nuo švaraus šiferio dėl metodo kvietimų. Šis metodas yra naudingas, kai reikia patikrinti sąveiką pagal valstybinį scenarijų arba naudojant priklausomybės injekcijos sistemas, tačiau ji vis tiek turėtų būti naudojama taupiai. Paprastai rekomenduojama vengti naudoti „clearInvocations ()“, nebent to būtina, nes tai taip pat gali apsunkinti testus, jei jie nebus naudojami apgalvotai [1] [4] [9].

Pagrindiniai skirtumai

- Stubbinimas: `Reset ()` pašalina visus kibirkščius, reikalaudamas pakartotinai pritvirtinti pavyzdį, tuo tarpu „clearInvocations ()“ palieka nepažeistus.
- Kvietimo skaičiavimas: abu metodai Aišku kvietimu skaičiuoja, tačiau „Reset ()“ tai daro kaip viso iš naujo nustatymo dalį, o „ClearInVocations ()“ „konkrečiai siekia“.
- Testo sudėtingumas: Abu metodai gali sukelti sudėtingesnius testus, jei jie nebus naudojami atsargiai, tačiau „Reset ()“ yra linkęs sukelti daugiau problemų dėl poreikio pakartotinai pritvirtinti tyčiojimus.

Apibendrinant galima pasakyti, kad nors abu metodai gali būti naudojami valdyti modernizuotą būseną, „Reset ()“ yra labiau invaziniai ir paprastai atgrasomi, tuo tarpu „aiškioms ()“ yra tikslingesni, tačiau vis tiek turėtų būti naudojami protingai, norint išlaikyti švarius ir tikslinius testus.

Citatos:
[1] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-meral-seuse-of-hockitos-reset-method
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-resetting-a-hock-hter-setup-in-Mockoto
[6] https://reflectorling.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-number-of
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-clear-invocations
[10] https://github.com/mock/mockk/discussions/842