A Mockito két módszert kínál, amelyek felhasználhatók a gúnyok állapotának kezelésére a tesztelés során: `reset ()` és `clearInvocations ()`. Míg mindkét módszert használják a modell állapotának kezelésére, különböző célokat szolgálnak, és különálló hatással vannak a gúnyokra.
Mockito `reset ()` módszer
A „reset ()” módszert a Mockito -ban használják a modell objektum teljes visszaállításához. Ez azt jelenti, hogy nemcsak törli a meghívási számot, hanem eltávolítja a gúnyon beállított daganatokat is. Ez problematikus lehet, mivel megköveteli, hogy újracsomagolja a gúnyolódást, miután visszaállítja azt, ha meg akarja tartani a tesztek specifikus viselkedését. A „reset ()” használatát általában elriasztják, mert komplex és kevésbé koncentrált tesztekhez vezethet. Javasoljuk, hogy kerülje el a „reset ()” használatát, hacsak feltétlenül szükséges, mivel ez eltakarja a tesztek szándékát, és megnehezítheti őket [1] [5] [7].
Mockito `clearInvocations ()` módszer
A „ClearInvocations ()” módszer, amelyet a Mockito 2.1 -ben vezettek be, lehetővé teszi a gúnyolódás meghívási számának törlését anélkül, hogy visszaállítaná a daganatát. Ez azt jelenti, hogy továbbra is ugyanazokat a csonkokat használhatja, miközben biztosítja, hogy minden teszt tiszta palával kezdődik a módszerhívásokkal kapcsolatban. Ez a módszer akkor hasznos, ha ellenőriznie kell az interakciókat egy állami forgatókönyvben vagy függőségi injekciós keretek használatakor, de ezt továbbra is óvatosan kell használni. Általában javasolt, hogy elkerülje a „clearInvocations ()” használatát, ha szükséges, mivel az is bonyolíthatja a teszteket is, ha nem gondolkodva használják [1] [4] [9].
kulcsfontosságú különbségek
- Stubbing: A `reset ()` eltávolítja az összes daganatot, és megköveteli a modell újbóli beillesztését, míg a `clearInvocations ()` `` a Stingt-t érinti.
- Meghívási szám: mindkét módszer egyértelmű meghívási számot számít, de a „reset ()” ezt a teljes visszaállítás részeként teszi meg, míg a „clearInvocations ()” kifejezetten célozza meg a meghívási számokat.
- A teszt bonyolultsága: Mindkét módszer összetettebb tesztekhez vezethet, ha nem használják gondosan, de a „reset ()” több problémát okoz, mivel a gúnyolódások újbóli megkezdése szükséges.
Összefoglalva: bár mindkét módszer felhasználható a modell állapotának kezelésére, a „reset ()” invazív és általában elriasztott, míg a „clearinvocations ()” célzottabb, de még mindig meggondolható módon kell felhasználni a tiszta és fókuszált tesztek fenntartására.
Idézetek:[1] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-pliter-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-stesting-advisor/selenium/methods/org.mockito.mockito.clearInvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-to-rasting-a-mock-after-etup-in-mockito
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-very-metify-reboot-number-of-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