Metóda `RESET ()` MOCKITA je funkcia, ktorá vám umožňuje resetovať falošný objekt, aby sa dal znovu použiť. Jeho používanie však vo všeobecnosti odrádzajú vývojári a používatelia Mockito, pretože môžu naznačovať zle navrhnuté testy alebo kód, ktorý je príliš zložitý a ťažko testovateľný [7] [9]. Namiesto toho je odporúčaným prístupom vytvorenie nových falošní pre každú metódu testovania, aby sa zabezpečila nezávislosť a jasnosť pri testovaní [7] [9].
Porovnanie s inými zosmiešňovanými knižnicami
1. JMock2: Na rozdiel od Mockito, JMock2 používa kontext na správu očakávaní a falošných informácií, ktoré sú prestavané pre každú testovaciu metódu. To znamená, že JMock2 nevyžaduje explicitný reset, ako to robí Mockito [10]. Prístup JMock2 pomáha udržiavať izoláciu testov bez toho, aby sa musel manuálne resetovať falošné.
2. EASYMOCK: Easymock tiež nevyžaduje metódu resetovania. Je navrhnutý tak, aby pre každý test vytváral nové falošné objekty, podobné odporúčanej praxi s Mockito. Szczepan Faber, vývojár Mockito, uvádza, že pri používaní Easymock nikdy nepotreboval funkciu resetov [8].
3. Mockito vs. ďalšie knižnice: Všeobecne platí, že ďalšie zosmiešňujúce knižnice ako JMock2 a Easymock propagujú prístup čistejšieho testovania buď automatickým riadením falošného stavu, alebo povzbudením vytvorenia nových falošní pre každý test. Metóda `RESET ()` MOCKITO je skôr výnimkou ako normou v zosmiešňovacích rámcoch.
osvedčené postupy
- Vyhnite sa použitiu `reset ()`: Pokiaľ nie je absolútne nevyhnutné, napríklad keď je falošný injekt injektovaný kontajnerom a nemôže byť obnovený pre každý test, je vhodné vyhnúť sa použitiu `reset ()`. Namiesto toho sa zamerajte na vytváranie jednoduchých a zameraných testov s novými falošnými pre každý scenár [7] [9].
- Použite `clearInVocations ()`: Ak potrebujete vymazať interakcie bez resetovania Stubbingu, použite „clearInVocations ()`. Táto metóda vám umožňuje zachovať stráženie pri vyčistení všetkých zaznamenaných interakcií, ktoré môžu byť užitočné v určitých scenároch [5].
- Kód refaktora pre testovateľnosť: Ak zistíte, že potrebujete používať `reset ()„ často, môže to naznačovať, že váš kód by mohol mať úžitok z refaktoringu, aby bol testovateľný. To by mohlo zahŕňať rozklad komplexných metód alebo zlepšenie injekcie závislosti [9].
Stručne povedané, zatiaľ čo Mockito poskytuje metódu `reset ()`, jeho použitie sa vo všeobecnosti odrádza v prospech vytvorenia nových zosmiešňovaní pre každý test. Ostatné zosmiešňovacie knižnice často podporujú podobné postupy, zdôrazňujú čisté a nezávislé testy na zložité riadenie falošnej správy.
Citácie:[1] https://www.tutorialspoint.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-verydayy-mockito
[6] https://www.jrebel.com/blog/Mock-unit-testing-with-mockito
[7] https://stackoverflow.com/questions/34412106/Apppring-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareEngineering.stackexchange.com/questions/188299/is- This-an-appppr Advantle-use-usof-Mockitos-reset-methody
[10] https://stackoverflow.com/questions/18164123/how-to-clean-ping-mocks-in-pring-tests-wen-using-using-mockito