@@ -188,6 +188,50 @@ void fail();
188188[ Beispiel: junit4.TestAssume] {.ex href="https://github.com/Programmiermethoden-CampusMinden/Prog2-Lecture/blob/master/lecture/quality/src/junit4/TestAssume.java"}
189189
190190
191+ ::: notes
192+ # Java: "assert"-Keyword
193+
194+ Neben den wohlbekannten ` assert* ` -Methoden aus JUnit gibt es auch direkt von
195+ Java ein etwas verstecktes ` assert ` -Keyword, mit dem man Annahmen über Zustände
196+ und Werte explizit ausdrücken kann:
197+
198+ ``` java
199+ public void foo() {
200+ String bar = wuppie();
201+ assert bar != null : " result of wuppie() must not be null" ;
202+ }
203+ ```
204+
205+ Das ` assert ` besteht aus einer zu prüfenden Bedingung und einem String. Wenn die
206+ Bedingung erfüllt ist, läuft der Code einfach normal weiter. Anderenfalls wird ein
207+ ` AssertionError ` geworfen mit dem angegebenen String als Message.
208+
209+ Allerdings sind diese JVM-Assertions per Default ** deaktiviert** . Man muss sie beim
210+ Aufruf manuell über die Option ` -enableassertions ` bzw. ` -ea ` (Kurzschreibweise)
211+ aktivieren (` java -ea main ` )! Dies gilt auch beim Start über die IDE oder Gradle ...
212+
213+ :::::: warning
214+ Wichtig: Die Assertions sind per Default deaktiviert und müssen erst manuell aktiviert
215+ werden. Außerdem wird bei Verletzung der Bedingung eine * unchecked exception* (ein Error)
216+ geworfen, der auf einen nicht korrigierbaren Programmzustand hindeutet.
217+
218+ 1 . Nutzen Sie das Java-` assert ` deshalb nicht als Ersatz für das normale Prüfen von
219+ Parametern von ` public ` Methoden (also Methoden der Schnittstelle, die Ihre Kunden
220+ aufrufen).
221+
222+ 2 . Während der Entwicklungszeit kann das Java-` assert ` aber ganz nützlich sein, weil Sie so
223+ interne Annahmen sichtbar und prüfbar machen (vorausgesetzt, Sie haben ` -ea ` aktiviert).
224+
225+ Analog könnte ein Java-` assert ` an Stellen eingebaut werden, die eigentlich nicht erreichbar
226+ sein sollten (etwa nach einer Dauerschleife oder in einem nicht erreichbaren ` default ` -Zweig
227+ in einem ` switch ` ).
228+
229+ 3 . Bitte das Java-` assert ` ** nie** in einer JUnit-Testmethode statt der "richtigen"
230+ JUnit-` assert* ` verwenden!
231+ ::::::
232+ :::
233+
234+
191235# Setup und Teardown: Testübergreifende Konfiguration
192236
193237``` java
0 commit comments