A Mockito `reset ()` módszer egy olyan szolgáltatás, amely lehetővé teszi a modell objektum visszaállítását, hogy újra felhasználható legyen. Használatát azonban általában a Mockito fejlesztők és a felhasználók elriasztják, mivel ez olyan rosszul megtervezett teszteket vagy kódot jelezhet, amelyek túlságosan összetettek és nehéz tesztelni [7] [9]. Ehelyett az ajánlott megközelítés az, hogy új modelleket hozzon létre minden egyes vizsgálati módszerhez, hogy biztosítsa a függetlenséget és a tesztelés egyértelműségét [7] [9].
Összehasonlítás más gúnyos könyvtárakkal
1. JMOCK2: A Mockito -val ellentétben a JMOCK2 kontextust használ az elvárások kezelésére és az információk gúnyolására, amelyet minden egyes vizsgálati módszernél újjáépítenek. Ez azt jelenti, hogy a JMock2 nem igényel olyan kifejezett visszaállítást, mint a Mockito [10]. A JMOCK2 megközelítése elősegíti a teszt elszigetelését anélkül, hogy manuálisan vissza kellene állítania a modelleket.
2. EasyMock: Az EasyMock szintén nem igényel visszaállítási módszert. Úgy tervezték, hogy minden teszthez új modell objektumokat hozzon létre, hasonlóan a Mockito -val kapcsolatos ajánlott gyakorlathoz. Szczepan Faber, a Mockito fejlesztője megemlíti, hogy soha nem volt szüksége visszaállítási funkcióra az EasyMock használatakor [8].
3. Mockito vs. más könyvtárak: Általában véve más gúnyos könyvtárak, például a JMock2 és az EasyMock elősegítik a tisztább tesztelési megközelítést azáltal, hogy automatikusan kezelik a modell állapotát, vagy ösztönzik az új modellek létrehozását az egyes tesztekhez. A Mockito `reset ()` módszer inkább kivétel, mint a norma a gúnyos keretek gúnyolódásában.
A legjobb gyakorlatok
- Kerülje el a „reset ()” használatát: hacsak feltétlenül szükséges, például amikor egy konténer befecskendez egy gúnyot, és nem lehet újból létrehozni minden teszthez, akkor tanácsos elkerülni a „reset ()” használatát. Ehelyett összpontosítson az egyszerű, koncentrált tesztek létrehozására, amelyek minden forgatókönyvhöz új gúnyolódnak [7] [9].
- Használja a `clearInvocations ()` használatát: Ha az interakciókat meg kell törölnie anélkül, hogy visszaállítaná a rakást, akkor használja a `clearInvocations ()` -t. Ez a módszer lehetővé teszi a daganatok megőrzését, miközben megtisztítja a rögzített interakciókat, amelyek bizonyos forgatókönyvekben hasznosak lehetnek [5].
- A tesztelhetőség refaktor kódja: Ha úgy találja, hogy a `reset ()` használatát kell használnia, akkor ez azt jelezheti, hogy a kódja hasznos lehet a refaktoráció számára, hogy a tesztelhetőbbé váljon. Ez magában foglalhatja az összetett módszerek lebontását vagy a függőségi injekció javítását [9].
Összefoglalva: míg a Mockito egy „reset ()” módszert biztosít, annak felhasználása általában elriasztja az egyes tesztekhez új modellek létrehozását. Más gúnyolódó könyvtárak gyakran elősegítik a hasonló gyakorlatokat, hangsúlyozva a tiszta és független teszteket az összetett modellkezelés felett.
Idézetek:[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-everyday-mockito
[6] https://www.jrebel.com/blog/mock-unit-stesting-with-mockito
[7] https://stackoverflow.com/questions/34412106/apprite-use-of-mockito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-pliter-use-of-mockitos-reset-method
[10] https://stackoverflow.com/questions/18164123/how-to-clean-p-mocks-in-spring-tests-when-using-mockito