Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jaké jsou nejlepší postupy pro resetování zesměšňování v Mockito


Jaké jsou nejlepší postupy pro resetování zesměšňování v Mockito


Resetování zesměšňování v Mockito je funkce, která vám umožní znovu použít falešné objekty vyčištěním jejich strniště a interakcí. Avšak použití `reset ()` je však obecně odrazováno, pokud není nezbytně nutné, protože to může naznačovat špatně strukturované testy. Zde je několik osvědčených postupů pro resetování zesměšňování v Mockito:

Pochopení, kdy použít `reset ()`

-Vyvarujte se používání `reset ()`: primárním důvodem `reset ()` existuje podpora simulovaných vstřikovaných kontejnerů, jako jsou ty, které se používají v starších kódech nebo rozhraní třetích stran. Ve většině případů, zejména s dobře navrženým kódem založeným na testu, byste se měli vyhnout použití `reset ()` a místo toho se zaměřte na vytváření malých, soustředěných testovacích metod [2] [4].

- Vůně kódu: Pokud zjistíte, že potřebujete používat `reset ()` v rámci testovací metody, může to být známka toho, že vaše testy jsou příliš složité nebo pokrývají příliš mnoho scénářů. To by mohlo naznačovat potřebu refaktorovat vaše testy nebo testovaný kód [2].

Alternativy k `reset ()`

- Vytvoření nových falešů: ​​Namísto resetování zesměšňování zvažte vytvoření nových falešných instancí pro každou testovací metodu. Tento přístup zajišťuje, že každý test začíná čistou břidlicí, což snižuje riziko interakcí z předchozích testů ovlivňujících současný [4].

- Použijte `clearInvocations ()`: pokud potřebujete pouze vyčistit historii vyvolání (např. K ověření interakcí, aniž byste ovlivnili strništění), použijte `mockito.clearinvocations ()`. Tato metoda odstraňuje historii vyvolání bez resetování pahýlů, které mohou být užitečné v určitých scénářích [4].

osvědčené postupy pro resetování zesměšňování

- Resetujte po každém testu: Pokud musíte resetovat zesměšňování, udělejte to po každé testovací metodě pomocí anotace `@after` v junit nebo` apeeach () `v Scalest. Tím je zajištěno, že každý test začíná čistým falešným stavem [3] [10].

- Vyvarujte se resetování před testy: Resetování zesměšňování před každým testem může vést ke zmatku o tom, v jakém stavu je zesměšňování na začátku testu. Po zkouškách je obecně jasnější vytvářet nové zesměšňování nebo resetování [10].

- Použijte funkce Framework: V rámcích, jako je jaro, může používat anotace jako `@mockBean` automaticky zvládnout simulované resetování po každém testu, což eliminuje potřebu manuálního resetu [10].

Závěr

Zatímco Mockito poskytuje metodu `resetu ()` pro konkrétní případy použití, je obecně vhodné se vyhnout jeho použití ve prospěch čistšího a zaměřenějšího testovacího návrhu. Vytvořením nových simulovačů pro každý test nebo použitím funkcí rámce pro správu falešného stavu můžete zajistit robustní a udržovatelné testy bez nutnosti manuálního resetu.

Citace:
[1] https://www.tutorialsspoint.com/mockito/mockito_resetting_mock.htm
[2] https://site.mockito.org/javadoc/current/mockito/mockito.html
[3] https://twitter.github.io/finatra/user-guide/testing/mocks.html
[4] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-appro-Use-of-mockitos-reset-method
[5] https://github.com/mockito/mockito-kotlin/issues/513
[6] https://symflower.com/en/company/blog/2024/how-to-do-mocking-spring-boot/
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.reset
[8] https://github.com/mockito/mockito/issues/183
[9] https://www.toptal.com/java/a-guide-to-everyday-mockito
[10] https://stackoverflow.com/questions/18164123/How-to-clean-p-mocks-in-spring-tests-When-Using-Mockito