Metoda „reset ()” Mockito to funkcja, która umożliwia zresetowanie próbnego obiektu, aby można go było ponownie wykorzystać. Jednak jego użycie jest ogólnie zniechęcane przez programiści i użytkowników Mockleto, ponieważ może wskazywać na źle zaprojektowane testy lub kod, który jest zbyt złożony i trudny do przetestowania [7] [9]. Zamiast tego zalecanym podejściem jest stworzenie nowych próbek dla każdej metody testowej w celu zapewnienia niezależności i jasności w testowaniu [7] [9].
Porównanie z innymi kpiącymi bibliotekami
1. JMock2: W przeciwieństwie do Mockleto, JMock2 używa kontekstu do zarządzania oczekiwaniami i próbnymi informacjami, które są odbudowane dla każdej metody testu. Oznacza to, że JMock2 nie wymaga jawnego resetowania, tak jak robi to Mockito [10]. Podejście JMock2 pomaga utrzymać izolację testową bez konieczności ręcznego zresetowania próbek.
2. Easymock: Easymock zwykle nie wymaga metody resetowania. Został zaprojektowany do tworzenia nowych próbnych obiektów dla każdego testu, podobnie jak zalecana praktyka z Mockito. Szczepan Faber, deweloper Mocchito, wspomina, że nigdy nie potrzebował funkcji resetowania podczas używania Easymock [8].
3. Mockito vs. inne biblioteki: Ogólnie rzecz biorąc, inne kpiące biblioteki, takie jak JMock2 i Easymock, promują czystsze podejście do testowania, automatycznie zarządzając próbą lub zachęcając do tworzenia nowych próbek dla każdego testu. Metoda Mockito „RESET ()` jest bardziej wyjątkiem niż normą w kpiących ramach.
Najlepsze praktyki
- Unikaj używania `reset ()`: chyba, że absolutnie konieczne, na przykład gdy próba jest wstrzykiwana przez pojemnik i nie można go odtworzyć dla każdego testu, zaleca się unikanie używania `reset ()`. Zamiast tego skup się na tworzeniu prostych, skoncentrowanych testów z nowymi próbami dla każdego scenariusza [7] [9].
- Użyj `clearInvoCations ()`: Jeśli chcesz usunąć interakcje bez resetowania odcięcia, użyj `` clearInvoCations () '. Ta metoda pozwala zachować uderzenie przy jednoczesnym usuwaniu zarejestrowanych interakcji, które mogą być przydatne w niektórych scenariuszach [5].
- Kod refaktora dla testowalności: jeśli musisz używać `RESET () często, może to wskazywać, że Twój kod może skorzystać z refaktoryzacji, aby uczynić go bardziej testowanym. Może to obejmować rozbicie złożonych metod lub poprawę wstrzyknięcia zależności [9].
Podsumowując, podczas gdy Mockito zapewnia metodę „reset ()”, jej użycie jest ogólnie zniechęcane na rzecz tworzenia nowych próbek dla każdego testu. Inne kpiące biblioteki często promują podobne praktyki, podkreślając czyste i niezależne testy w zakresie złożonego kpiny.
Cytaty:[1] https://www.tutorialspoint.com/mocksito/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-mockoto
[6] https://www.jrebel.com/blog/mock-unit-testing-with-gocchito
[7] https://stackoverflow.com/questions/34412106/apprey-use-of-gocchito-reset
[8] https://groups.google.com/g/mockito/c/_vxg33tlzl8
[9] https://softwareengineering.stackexchange.com/questions/188299/is-this-an-apprey-use-of-gocchitos-eset-method
[10] https://stackoverflow.com/questions/18164123/how to-le-lean-up-pocks-in-spring-tests-hen-using-mockoto