Prawie odpowiedziałeś na własne pytanie. Twój blok przechwytywania nie złapie AssertionError
, który zostanie odrzucony przez Assert
, ponieważ jest to Error
(lub, dokładniej, rozciąga się na java.lang.Error
). See the docs, aby uzyskać więcej informacji na ten temat. Twój blok catch łapie tylko Throwable
obiektów, które rozciągają java.lang.Exception
Jeśli naprawdę chcesz go złapać - trzeba użyć
catch (AssertionError e) {
...
Jednak, jak others mieć mentioned, jest to bardzo nietypowy sposób używać twierdzeń - zwykle powinny one przejść, a jeśli się nie powiedzie, bardzo rzadko zdarza się, że chcesz kontynuować realizację programu. Właśnie dlatego niepowodzenie rzucało raczej Error
niż Exception
. Możesz przeczytać więcej o (nie) łapaniu Error
w this question.
Czy jesteś pewien, że nie chcesz tylko testu - if (variableName == "1")
?
NB jeśli testowanie jednostkowe testowy kod pomocnika, jak dopasowującego, to może mieć sens, aby złapać AssertionError
.
Dlaczego i tak chcesz to zrobić? Wygląda to na poważne nadużycie "Assert", które jest przeznaczone do testów jednostkowych – Dragondraikk