Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak se metoda resetování Mockito liší od clearInvocations


Jak se metoda resetování Mockito liší od clearInvocations


Mockito poskytuje dvě metody, které lze použít ke správě stavu simulovačů během testování: `Reset ()` a `clearInvocations ()`. Zatímco obě metody se používají ke správě falešného stavu, slouží různým účelům a mají zřetelné účinky na zesměšňování.

Mockito's `Reset ()` Metoda

Metoda „Reset ()“ v Mockito se používá k úplnému resetování simulovaného objektu. To znamená, že to nejen vyčistí počty vyvolání, ale také odstraní jakékoli strzení, které bylo nastaveno na falešném. To může být problematické, protože to vyžaduje, abyste si po resetování znovu upravili zesměšňování, pokud chcete udržovat konkrétní chování pro své testy. Použití `reset ()` je obecně odrazováno, protože může vést ke složitým a méně zaměřeným testům. Doporučuje se vyhnout se použití `reset ()`, pokud to není nezbytně nutné, protože může zakrývat záměr vašich testů a ztěžovat je udržovat [1] [5] [7].

Mockito's `ClearInvocations ()` Metoda

Metoda `clearInvocations ()`, zavedená v Mockito 2.1, vám umožní vyčistit počty vyvolání falešného, ​​aniž byste resetovali jeho strniště. To znamená, že můžete i nadále používat stejné pahýly a zároveň zajistit, aby každý test začíná čistou břidlicí, pokud jde o vyvolání metod. Tato metoda je užitečná, pokud potřebujete ověřit interakce ve stavovém scénáři nebo při použití rámců injekce závislosti, ale měla by být stále používána střídmě. Obecně se doporučuje vyhnout se použití `clearInvocations ()`, pokud to není nutné, protože může také komplikovat testy, pokud se nepoužívá zamyšleně [1] [4] [9].

Klíčové rozdíly

- Stubbing: `Reset ()` Odstraňuje veškeré strzení a vyžaduje, abyste si vyžádali simulovanou, zatímco `clearInvocations ()` listy neducují.
- Počty vyvolání: Obě metody jsou počty vyvolání, ale `reset ()` to činí jako součást úplného resetu, zatímco `clearInvocations ()` se konkrétně zaměřuje na vyvolání.
- Testovací složitost: Obě metody mohou vést ke složitějším testům, pokud se nepoužívají pečlivě, ale „resetujte ()“, má tendenci způsobovat více problémů v důsledku potřeby opětovného stávání zesměšňování.

Stručně řečeno, ačkoli obě metody lze použít ke správě falešného stavu, „reset ()“ je invazivnější a obecně odrazovanější, zatímco `clearInvocations ()` je více zacíleno, ale měl by být stále používán uvážlivě k udržení čistých a soustředěných testů.

Citace:
[1] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-appro-use-of-mockitos-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-tore resetting-amock-setup-in-mockito
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/MockIto-Dees-veraify-reboot-Number-Of-Times
[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/mockk/mockk/discussions/842