Podczas korzystania z Mockleto do kpiny z wyjątków, kilka typowych pułapek może sprawić, że testy są mniej skuteczne lub trudniejsze do utrzymania. Oto niektóre z tych pułapek i jak ich uniknąć:
1. Przemawianie **
Jedną z najważniejszych pułapek jest nadmierne kpiny. Dzieje się tak, gdy kpisz z zbyt wielu zależności, co prowadzi do testów, które są kruche i trudne do utrzymania. Nadmierne nakładanie może powodować, że testy skupią się bardziej na próbach niż na faktycznych zachowaniu testowanego systemu. Aby tego uniknąć, skoncentruj się na wyśmiewaniu tylko współpracowników, którzy mają nietrywialne zachowanie lub tych, których interakcje chcesz zweryfikować. Użyj prawdziwych instancji do prostej współpracy [3].2. Nieprawidłowe wyjątki **
Mockito zapewnia, że wyrzucenie wyjątku jest prawidłowe dla konkretnej metody Stupbed. Jeśli spróbujesz rzucić wyjątek, który nie znajduje się na liście sprawdzonych wyjątków metody, Mockito narzeka. Na przykład, jeśli metoda nie zadeklaruje „ioException”, próba wyśmiewania jej w celu rzucenia „ioException” spowoduje błąd [1]. Zawsze upewnij się, że wyśmiewany wyjątek jest ważny dla metody.3. Używanie `thenthrow ()` z nieważnymi metodami **
„When (). thenthrow () nie może być stosowany z metodami void, ponieważ nie ma wartości zwracanej do próbki. Zamiast tego użyj `dothrow ()` dla metod void. Nieprawidłowe mieszanie tych metod może prowadzić do błędów [2].4. Brak swoistości **
Kiedy kpisz z wyjątkami, ważne jest, aby określić, które wyjątki testujesz. Unikaj nadmiernego kpiny, koncentrując się na wyjątkach związanych z scenariuszem testowym. Pomaga to utrzymać koncentrację i utrzymanie testów [2] [8].5. Nieprawidłowe obsługa egzekucji **
Upewnij się, że kod aplikacji jest przygotowany do prawidłowego obsługi wyjątków, nawet po wyśmiewaniu podczas testów. Obejmuje to testowanie logiki do obsługi wyjątków, aby zachować się zgodnie z oczekiwaniami [2].6. Używanie znaczących komunikatów o błędach **
Kiedy kpisz z wyjątkami, zawieraj znaczące wiadomości, aby pomóc zdiagnozować problemy, jeśli testy się nie powiedzie. Ta praktyka zwiększa przejrzystość i skuteczność twoich testów [2].7. Testowanie logiki obsługi wyjątków **
Upewnij się, że kod obsługuje wyjątki zgodnie z oczekiwaniami. Obejmuje to weryfikację, że aplikacja zachowuje się poprawnie, gdy zostaną zrzucone wyjątki, co jest kluczowe dla budowania odpornych zastosowań [2].8. Resetowanie i wyczyszczenie próbek **
Mockito zapewnia takie funkcje takie jak `reset ()` i `` clearInvoCations () `do zarządzania próbami. Należy je jednak używać oszczędnie. Resetowanie kpiny należy wykonywać tylko w rzadkich przypadkach, na przykład gdy próba jest wstrzykiwana przez pojemnik i nie można go odtworzyć dla każdego testu. Rozliczanie inwokacji może być przydatne, jeśli odtwarzanie kpiny doprowadziłoby do znacznego kosztu ogólnego [1].Będąc świadomym tych pułapek i przestrzeganiem najlepszych praktyk, możesz skutecznie użyć Mockleto do kpiny z wyjątków i upewnienia się, że testy są solidne i możliwe do utrzymania.
Cytaty:[1] https://www.toptal.com/java/a-guide-to-everyday-mockito
[2] https://www.browserstack.com/guide/mockito-throw-exception
[3] https://javanexus.com/blog/avoiding-gocchito-testing-pitfalls
[4] https://stackoverflow.com/questions/9186604/mockoito-exception-hen-requires-an-argument-hich-has-to-be-a-method-call-on
[5] https://stackoverflow.com/questions/22540108/best-practices-with-gocchito
[6] https://stackoverflow.com/questions/52512548/mock-method-to-do-not-throw-an-exception/52514628
[7] https://contributors.scala-lang.org/t/mockito-testing-nulls-and-exceptions/3915
[8] https://www.janbasktraining.com/community/java/throw-checked-exceptions-from-mocks-with-gocchito