Mockito zapewnia dwie metody, które można zastosować do zarządzania stanem próbnych podczas testowania: `RESET ()` i `` clearInvoCations () `. Podczas gdy obie metody są stosowane do zarządzania pozornym stanem, służą one różnych celach i mają wyraźny wpływ na próbki.
Metoda
Mockito's `Reset () '
Metoda „reset ()` w Mockito służy do całkowitego zresetowania próbnego obiektu. Oznacza to, że nie tylko usuwa liczbę inwokacji, ale także usuwa wszelkie uderzenia, które zostało ustawione na próba. Może to być problematyczne, ponieważ wymaga ponownego wykrycia kpiny po zresetowaniu, jeśli chcesz zachować określone zachowanie w testach. Zastosowanie „reset () jest ogólnie zniechęcane, ponieważ może prowadzić do złożonych i mniej skoncentrowanych testów. Zaleca się unikanie używania „reset ()”, chyba że jest to absolutnie konieczne, ponieważ może zaciemnić zamiar testów i utrudnić ich utrzymanie [1] [5] [7].
MetodaMockito `ClearInvoCations () '
Metoda „clearInvoCations ()`, wprowadzona w Mockito 2.1, umożliwia wyczyszczenie liczby wywołania pozdrawikowego bez resetowania jego uderzenia. Oznacza to, że możesz nadal używać tych samych odcinków, jednocześnie zapewniając, że każdy test rozpoczyna się od czystego tablicy dotyczącej inwokacji metod. Ta metoda jest przydatna, gdy trzeba zweryfikować interakcje w scenariuszu stanowym lub przy użyciu ram wtrysku zależności, ale nadal powinna być używana oszczędnie. Zasadniczo zaleca się unikanie stosowania `clearInvoCations (), chyba że jest to konieczne, ponieważ może również komplikować testy, jeśli nie jest używane w zamyśleniu [1] [4] [9].
Kluczowe różnice
- Stupbing: `RESET ()` Usuwa wszystkie uderzenia, wymagając ponownego zamachu kpiny, podczas gdy `` clearInvoCations () „pozostawia nienaruszone.
- Liczba inwokacji: Obie metody wyleczają liczbę wywołania, ale `RESET ()` robi to jako część pełnego resetowania, podczas gdy `` clearInvoCations () `` specyficznie kieruje się do inwokacji.
- Złożoność testu: Obie metody mogą prowadzić do bardziej złożonych testów, jeśli nie są stosowane ostrożnie, ale `` RESET () '' zwykle powoduje więcej problemów ze względu na potrzebę ponownego wykładania próbek.
Podsumowując, podczas gdy obie metody mogą być stosowane do zarządzania próbnym stanem, `RESET () jest bardziej inwazyjne i ogólnie zniechęcane, podczas gdy„ clearInvoCations () jest bardziej ukierunkowane, ale nadal należy je stosować w celu utrzymania czystych i skoncentrowanych testów.
Cytaty:[1] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-apprey-use-of-gocchitos-eset-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/selenum/methods/org.mocksito.mockito.clearinvocations
[5] https://stackoverflow.com/questions/19441538/what-is-the-correct-alternative-resetting-a-mock-after-tetup-in-gocchito
[6] https://reflectoring.io/clean-unit-tests-with-gocchito/
[7] https://stackoverflow.com/questions/30081161/mocks-does-verify-method-reboot-times
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-blear-invocations
[10] https://github.com/mockk/mockk/discussions/842