V Mockito je „OverifyZeroInterAction“ špecializovaná metóda overovania, ktorá sa používa na zabezpečenie toho, aby sa počas testu uskutočňovali žiadne volania metódy na zosmiešňovanom objekte. Táto metóda je rozhodujúca pre udržiavanie čistoty testov jednotiek zabránením neúmyselných interakcií, ktoré by mohli naznačovať nedostatky v logike alebo zbytočných závislostiach.
rozdiely od iných metód overovania
1. Účel a správanie:
- `VerifyZeroInterActions`: Táto metóda kontroluje, že na zosmiešňovanom objekte sa nevykonali žiadne hovory metódy. Ak sa zistí akékoľvek volanie metódy, Mocito vyvolá výnimku, čo spôsobí zlyhanie testu. Používa sa na tvrdenie, že falošný objekt zostáva počas vykonávania testu nedotknutý [1] [4].
- `Overify`: Táto metóda sa používa na overenie, či sa volania konkrétnej metódy vyskytujú podľa očakávania. Umožňuje vám skontrolovať, či bola metóda zavolaná špecifickými argumentmi, a môže sa použiť s rôznymi režimami overovania, ako je `Times ()`, `ateast ()` a `amost ()` na určenie počtu vyvolaní [2] [7].
2. Režimy overovania:
- `VerifyZeroInterActions` nepodporuje režimy overovania. Jednoducho kontroluje absenciu akýchkoľvek interakcií.
- `Overify` podporuje viac režimov overovania, ako napríklad` Times () `,` asoteast () `,` Atleastonce () `a` atmost () `, čo vám umožní špecifikovať, koľkokrát by sa mala metóda nazvať [2] [7].
3. Poradie vyvolania:
- `VerifyZeroInterActions` sa nezaujíma o poradie volaní metód, pretože kontroluje žiadne interakcie vôbec.
- `Overify` sa dá použiť s` inorder` na overenie poradia vyvolania metódy na falošné objekty. Je to užitočné, keď je dôležitá postupnosť volaní metód [2] [7].
4. Prípady použitia:
- `VerifyZeroInterActions` sa zvyčajne používa, keď chcete zabezpečiť, aby sa v testovacom scenári vôbec nepoužil falošný objekt. Pomáha to pri izolácii testovanej jednotky a zabezpečení, aby sa nevyskytli žiadne vedľajšie účinky v dôsledku neočakávaných interakcií [1] [4].
- `Overify` sa používa v scenároch, kde musíte potvrdiť, že medzi objektmi sa vyskytujú konkrétne interakcie. Je nevyhnutné na testovanie očakávaného správania testovaného systému [2] [7].
5. Vzťah s `OverifyNomoreInterctions`:
- `OverifEZeroInterActions` kontroluje, že sa vôbec nevyskytli žiadne interakcie.
- `OverifyNoMoreInterAction` Kontroluje, či boli overené všetky interakcie na falošnom objekte. Zaisťuje, že po použití `Overtify` pre konkrétne metódy volania [3] [9] nezostali žiadne neoverené interakcie.
Stručne povedané, „OverifEZeroInterAction“ je špecializovaná metóda zameraná na zabezpečenie žiadnych interakcií, zatiaľ čo „overte“ je univerzálnejšia, čo vám umožňuje skontrolovať konkrétne interakcie a ich frekvenciu. Obe metódy sú nevyhnutné pri testovaní jednotiek s Mockito, ktoré slúžia rôznym účelom v závislosti od testovacieho scenára.
Citácie:[1] https://www.dhiwise.com/post/how-to-use-everifyZerozerIning-for-better-flutter-tests
[2] https://www.dhiwise.com/post/mastering-unit-testing-a-complete-guide-to-mockito-Verify
[3] https://stackoverflow.com/questions/52396683/Difference-between-VerifyNoMoreInterActions-and-and-VerifyZeroInterActions-in-mockit
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.verifyZeroInterActions
[5] https://stackoverflow.com/questions/64239160/using-mockito-wen-to-mock-and--verify-vs-mocko-verify
[6] https://www.javacodegeeks.com/2015/11/Mockito-verification.html
[7] https://www.toptal.com/java/a-guide-to-verydayy-mockito
[8] https://www.baeldung.com/Mockito-Verify
[9] https://www.digitalocean.com/community/tutorials/Mockito-Verify