## Schlüsselwörter - Folgende Schlüsselwörter gibt es in Groovy: \ \ Diese Wörter (und auch die Bezeichner für die Datentypen) dürfen im allgemeinen, wie in vielen anderen Sprachen nicht als Variablennamen benutzt werden. Jedoch gibt es in Groovy einen Weg dies zu umgehen: ``` def "this"(){print "Diese Methode hat den Namen \'this\' } //-> "Diese Methode hat den Namen 'this'" ``` Hierbei muss man den Methodennamen in Anführungszeichen setzen. Ein Methodenaufruf würde dann wie folgt aussehen: ``` this.this(); //(Es wird angenommen das Objekt ruft selbst die Methode auf) ``` Es wird jedoch stark davon abgeraten dieses Groovy - Feature zu benutzen, da es in den meisten Fällen keine Vorteile bietet und nur für Verwirrung sorgt. ### Kontextuelle Schlüsselwörter: - as - in - permitsrecord - sealed - trait - var - yields Da diese Schlüsselwörter in weder in Java, noch in früheren Groovy Versionen existierten, kann man sie für Variablen- / Methodennamen benutzen, ohne sich des oben gezeigten Tricks bedienen zu müssen. Es wird empfohlen beim Aufrufen dieser Methoden / beim Zugriff auf diese Variablen ein "this." davorzusetzen, damit es nicht Verwirrungen kommt. Am besten lässt man es jedoch direkt sein und überlegt sich andere Namen. ## Tests - Groovy bietet nicht nur Support für JUnit 5 (und älter), sondern liefert auch einen eigenen Satz an Testmethoden, um die testgetriebene Programmierung zu vereinfachen. Ein Beispiel hierfür wäre Spock. Mit Spock kann man sowohl Java, als auch Groovy Code testen. Getestet wird mit sogenannten Spezifikationen. Die Testklasse muss also von **spock.lang.Specification** erben. #### Erklärung: 1. Der Name der Testmethode muss ein String sein, der beschreibt, was beim Testen erwartet wird. 2. Das Schlüsselwort **setup** dient dazu, lokale Variablen zu initialisieren, die für den Test gebraucht werden (vgl. @BeforeEach Annotation, JUnit) 3. Das **when** Schlüsselwort beschreibt den Codeabschnitt, der zu einem bestimmten Verhalten führen soll 4. **then** beschreibt das erwartete Verhalten.