2013-07-09 11 views
5

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

+0

Udzieliłem odpowiedzi, ale mógłbym uczynić ją bardziej precyzyjną, jeśli opublikujesz testowaną metodę. –

Odpowiedz

4

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: .

1

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.

0

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).

0

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.

+0

Jak zgnieść wyjątek wskaźnika pustego? –

Powiązane problemy