Metoda Mockito `Reset ()` je funkce, která vám umožňuje resetovat falešný objekt, takže jej lze znovu použít. Jeho použití je však obecně odrazováno vývojáři a uživateli Mockito, protože to může naznačovat špatně navržené testy nebo kód, který je příliš složitý a je obtížné je čistě testovat [7] [9]. Místo toho je doporučeným přístupem vytvoření nových zesměšňování pro každou testovací metodu k zajištění nezávislosti a jasnosti při testování [7] [9].
Porovnání s jinými zesměšňujícími knihovnami
1. JMock2: Na rozdíl od Mockito používá JMock2 kontext ke správě očekávání a falešných informací, které jsou přestavěny pro každou testovací metodu. To znamená, že JMock2 nevyžaduje explicitní resetování jako Mockito [10]. Přístup JMock2 pomáhá udržovat izolaci testu, aniž by musel ručně resetovat zesměšňování.
2. Easymock: Easymock také obvykle nevyžaduje metodu resetování. Je navržen tak, aby pro každý test vytvořil nové falešné objekty, podobně jako doporučená praxe s Mockito. Szczepan Faber, vývojář Mockito, zmiňuje, že při používání EasyMock nikdy nepotřeboval resetovací funkci [8].
3. Mockito vs. Ostatní knihovny: Obecně ostatní zesměšňující knihovny jako JMock2 a Easymock propagují přístup k testování čističe buď automaticky spravováním falešného stavu nebo povzbuzením vytvoření nových falešků pro každý test. Mockito's `reset ()` metoda je spíše výjimkou než normou v zesměšňování rámců.
osvědčené postupy
- Vyvarujte se používání `reset ()`: pokud to není nezbytně nutné, například když je simulovač vstřikován kontejnerem a nelze jej znovu vytvořit pro každý test, je vhodné se vyhnout použití `reset ()`. Místo toho se zaměřte na vytváření jednoduchých a soustředěných testů s novými falešnými pro každý scénář [7] [9].
- Použijte `clearInvocations ()`: Pokud potřebujete vyčistit interakce bez resetování strništění, použijte `clearInvocations ()`. Tato metoda umožňuje zachovat strnivování a zároveň vyčistit jakékoli zaznamenané interakce, které mohou být užitečné v určitých scénářích [5].
- Kód refaktoru pro testovatelnost: Pokud zjistíte, že potřebujete často používat `Reset ()`, může to naznačovat, že váš kód by mohl mít prospěch z refaktoringu, aby byl testovatelnější. To by mohlo zahrnovat rozbití složitých metod nebo zlepšení injekce závislosti [9].
Stručně řečeno, zatímco Mockito poskytuje metodu „resetování ()“, její použití je obecně odrazováno ve prospěch vytváření nových zesměšňování pro každý test. Jiné zesměšňující knihovny často propagují podobné praktiky a zdůrazňují čisté a nezávislé testy ohledně komplexního falešného řízení.
Citace:[1] https://www.tutorialsspoint.com/mockito/mockito_resetting_mock.htm
[2] https://groups.google.com/g/mockito/c/y_ihdc8lx_m
[3] https://www.vogella.com/tutorials/mockito/article.html
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[5] https://www.toptal.com/java/a-guide-to-everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/appropreate-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-appro-use-of-mockitos-reset-method
[10] https://stackoverflow.com/questions/18164123/How-to-clean-p-mocks-in-spring-tests-When-Using-Mockito