Czy istnieje sposób sprawdzenia, czy wyjątek został przechwycony? Mam na myśli, że w mojej metodzie jest sytuacja, w której powinienem złapać wyjątek iw teście chcę sprawdzić, czy wyjątek został naprawdę złapany.Sprawdź, czy wyjątek został przechwycony przez Mockito i PowerMock'a
Odpowiedz
Myślę, że odpowiedź brzmi: nie, - może zdołasz ją odepchnąć z intensywnym odbiciem, ale jeśli tak, to nie sądzę, żeby to było warte twojego czasu.
Ale myślę, że (nie widząc swój sposób), prawdopodobnie można wciąż pełne pokrycie od metody:
- Jeśli metoda wykonuje żadnych działań po połowu wyjątek, dochodzić lub potwierdzenia, że działania te stało się.
- Jeśli żadna akcja dzieje się po połowu wyjątek, dochodzić lub zweryfikować że niezależnie od działania miały się zdarzyć, ale zostały odcięte przez wyjątkiem , nie zdarzyć.
- Wreszcie, (ponownie, nie widząc swoją metodę nie wiem dokładnie co masz do czynienia z), czy metoda jest nieważna i nic się nie dzieje po połowu wyjątek, a ostatnia linia logiki jest co może zrzucić wyjątek, a następnie rozważyć, czy twoja metoda zwróci wartość logiczną , czy zwróci ją false, jeśli wyjątek zostanie przechwycony i będzie prawdziwy. Następnie w swoim teście wykonaj scenariusz, który powinien spowodować wyrzucenie i przechwycenie wyjątku i przetestować, czy metoda zwraca wartość false: .
Trudno podać porady bez żadnego przykładu. Ale jeśli wyjątek nie zostanie przechwycony, wzrośnie do momentu, w którym dojdzie do testu, a test zakończy się niepowodzeniem, ponieważ został zgłoszony wyjątek. Wiem, że nie sprawdza, czy został złapany w konkretnym bloku, ale po prostu, że został złapany w ogóle.
Co robi ten wyjątek w programie, jeśli nie zostanie przechwycony? Jeśli powoduje to awarię programu, można po prostu uruchomić część aktową testu w bloku try {}. Jeśli zgłasza wyjątek, można go złapać i nie zdać testu.
Inną opcją, jeśli wyjątek cacught wywołuje metodę, która będzie wywoływana, powiedzieć printToLog() można verfiy że metoda rzeczywiście wywołana z prawidłowymi parametrami (używając Mockito).
Powinieneś być w stanie wyśmiać element, który chcesz rzucić wyjątek, tak aby rzucił wyjątek, a następnie sprawdzić, czy nie było połączeń z innymi metodami, które byłyby wywoływane, gdyby nie wystąpił wyjątek.
Sprawdź również, czy stan jest zgodny z oczekiwaniami po zgłoszeniu wyjątku.
Jak zgnieść wyjątek wskaźnika pustego? –
- 1. HighCharts przechwycony wyjątek
- 2. Dlaczego wyjątek AccessViolationException nie może zostać przechwycony przez .NET4.0
- 3. PhantomJS nie został przechwycony po uruchomieniu przez serwer kompilacji
- 4. Wyjątek nie został przechwycony przez otwarcie nieistniejącego pliku przy użyciu C++
- 5. Jak sprawdzić, czy wyjątek nie został odrzucony?
- 6. Mockito sprawdź po wyjątku Junit 4.10
- 7. Sprawdź, czy wiersz został zmieniony w TClientDataset
- 8. GWT w IE8 - Wyjątek został zgłoszony i nie został złapany
- 9. Sprawdź, czy wydruk został wykonany pomyślnie
- 10. Sprawdź, czy element został przewinięty do góry
- 11. Sprawdź, czy element został kliknięty lub zmieniony
- 12. SDL2 - Sprawdź, czy kontekst OpenGL został utworzony
- 13. Sprawdź, czy plik został włączony lub załadowane
- 14. Sprawdź, czy plik javascript został załadowany
- 15. Tworzenie szydzili listy przez Mockito
- 16. Jak debugować „przechwycony wyjątek: niezdefiniowany (brak danych)” w Firefoksie
- 17. Klasa przeładunkowa zatrzymuje się po przechwycony wyjątek w niestandardowym middleware
- 18. Lista rozwijana sprawdź, czy indeks został zmieniony przez kod lub przez wybór
- 19. Mockito - sprawdź, czy żadna z metod współpracownika nie nazywa się
- 20. Jeśli zauważysz wyjątek przez odniesienie, czy możesz go zmodyfikować i ponownie rzucić?
- 21. Mockito matchers, klasa wartości scala i wyjątek NullPointerException
- 22. Dlaczego wyjątek nie został złapany w zamknięciu?
- 23. Które artefakty Maven powinienem użyć do importowania PowerMocka?
- 24. Czy istnieje sposób sprawdzenia, czy wyjątek MS CRM został zgłoszony przez wtyczkę?
- 25. Następujący wyjątek został zgłoszony przez dostawcę zdarzeń internetowych "EventLogProvider"
- 26. Sprawdź, czy obraz został załadowany z pamięci podręcznej, czy nie.
- 27. Test Mockito metoda pustki rzuca wyjątek
- 28. wyjątek został rzucony przez cel wywołania w Visual Studio 2013
- 29. Błąd CoreData doprowadza mnie do szaleństwa ... CoreData: Poważny błąd aplikacji. Wyjątek przechwycony przez delegata NSFetchedResultsController
- 30. Sprawdź, czy obiekt został utworzony czy nie w delphi
Udzieliłem odpowiedzi, ale mógłbym uczynić ją bardziej precyzyjną, jeśli opublikujesz testowaną metodę. –