Sie haben Ihre eigene Frage fast beantwortet. Ihr catch-Block wird nicht die AssertionError
fangen, die die Assert
löst, wenn es fehlschlägt, weil es eine Error
(oder genauer gesagt, es erweitert java.lang.Error
) ist. See the docs für weitere Informationen zu diesem Thema. Ihr Fang Block fängt nur Throwable
Objekte, die java.lang.Exception
verlängern, wenn Sie es wirklich wollen fangen - Sie
catch (AssertionError e) {
...
jedoch, wie othersmentioned haben, ist dies eine sehr ungewöhnliche Art und Weise verwenden, müssen Assertionen zu verwenden - sie sollten normalerweise bestehen und wenn sie ausfallen, ist es sehr ungewöhnlich für Sie, die Programmausführung fortzusetzen. Deshalb löst der Fehler Error
statt Exception
aus. Sie können mehr über (nicht) fangen Error
in this question lesen.
Sind Sie sicher, dass Sie nicht nur einen Test wünschen - if (variableName == "1")
?
NB Wenn Sie den Unit-Test-Hilfscode wie einen Matcher testen, ist es möglicherweise sinnvoll, die AssertionError
zu erfassen.
Warum möchten Sie das trotzdem tun? Dies scheint ein grober Missbrauch von 'Assert' zu sein, der für Unit Testing gedacht ist. – Dragondraikk