Mockito bietet zwei Methoden, mit denen der Zustand der Mocke während des Tests verwaltet werden kann: `reset ()` und `clearInvocations ()`. Während beide Methoden zur Behandlung des Scheinzustands verwendet werden, dienen sie unterschiedlichen Zwecken und haben unterschiedliche Auswirkungen auf die Mocke.
Mockitos `reset ()` Methode
Die Methode "Reset ()` in Mockito wird verwendet, um ein Mock -Objekt vollständig zurückzusetzen. Dies bedeutet, dass es nicht nur die Aufrufzählungen beseitigt, sondern auch alle Stubbing, die auf dem Schein festgelegt wurden, entfernt werden. Dies kann problematisch sein, da Sie nach dem Zurücksetzen des Scheins nach dem Zurücksetzen neu auftreten müssen, wenn Sie ein spezifisches Verhalten für Ihre Tests beibehalten möchten. Die Verwendung von `reset ()` wird im Allgemeinen entmutigt, da sie zu komplexen und weniger fokussierten Tests führen kann. Es wird empfohlen, "reset () zu vermeiden, es sei denn, es ist unbedingt erforderlich, da es die Absicht Ihrer Tests verschleiern und es schwerer machen kann, beizubehalten [1] [5] [7].
Mockitos `clearinvocations ()` Methode
Mit der in Mockito 2.1 eingeführten "Clearinvocations ()" "" können Sie die Aufrufzahlen eines Mocks löschen, ohne das Stummel zurückzusetzen. Dies bedeutet, dass Sie weiterhin die gleichen Stubs verwenden können und gleichzeitig sicherstellen, dass jeder Test mit einem sauberen Schiefer bezüglich Methodenaufrufe beginnt. Diese Methode ist nützlich, wenn Sie Interaktionen in einem staatlichen Szenario oder bei Verwendung von Abhängigkeitsinjektionsrahmen überprüfen müssen. Sie sollte jedoch immer noch sparsam verwendet werden. Es wird im Allgemeinen empfohlen, "ClearInvocations ()" zu vermeiden, es sei denn, es kann auch Tests komplizieren, wenn sie nicht nachdenklich verwendet werden [1] [4] [9].
Schlüsselunterschiede
.
- Zählungen für den Aufruf: Beide Methoden klären die Aufladung zählt, aber "reset ()" tut dies als Teil eines vollständigen Rücksetzens, während "ClearInvocations ()" spezifisch abzielt die Aufladung zählt.
- Testkomplexität: Beide Methoden können zu komplexeren Tests führen, wenn sie nicht sorgfältig verwendet werden, aber "reset ()` neigt dazu, mehr Probleme zu verursachen, da die Verspottungen wieder auftreten müssen.
Zusammenfassend können beide Methoden zum Verwalten des Scheinzustands verwendet werden, "Reset ()" ist invasiver und im Allgemeinen entmutigt, während "Clearinvocations ()" stärker gezielt ist, aber dennoch mit Bedacht verwendet werden sollte, um saubere und fokussierte Tests aufrechtzuerhalten.
Zitate:[1] https://softwareEngineering.stackexchange.com/questions/188299/is-this-an-upiturtset-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-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-toetting-a-mock-after-setup-mockito
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-number-of-f --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