Hi, hier bin ich wieder und zwar mit der Antwort auf die Frage,
warum wir Vorbedingungen mithilfe von Assertions überprüfen und nach Bedingungen eben mithilfe von Testfällen. Das liegt eigentlich daran,
dass wenn wir eine Klasse schreiben, wir eben nicht wissen,
wer diese Klasse irgendwann mal benutzt und auf welche Art und Weise
der die benutzt und auf was für unsinnige Ideen der dabei kommen kann,
Und wir müssen quasi unter Unsicherheit dafür sorgen, dass sichergestellt ist,
dass unsere Klasse nicht auf eine Art und Weise benutzt wird,
die vielleicht das System an einer ganz anderen Stelle irgendwie zum Crashen bringt.
Und wenn wir uns hier jetzt dieses Skate-Element mal angucken,
die Methode, die wir geschrieben haben, da ist es so,
dass wenn hier was Unsinniges eingegeben wird,
an dieser Stelle das Ganze schon abgefangen wird und nicht unsere Methode mit einer unsinnigen Eingabe weiterarbeitet und dann vielleicht,
wie gesagt, das System an irgendeiner anderen Stelle zum Crashen bringt,
Anders verhält es sich mit Nachbedingungen.
Da liegt es in unserer Hand, dafür zu sorgen,
dass unser Code dafür sorgt, dass wenn die Vorbedingungen eingehalten wurden,
die Nachbedingungen eben dann auch eingehalten werden.
Das liegt, wie gesagt, in unserer Hand.
Das macht unser Code. Und das können wir dann eben auch
genau jetzt, wenn wir den Code schreiben, überprüfen.
Und dann gucken wir uns dazu jetzt einfach mal die Methode Appent
an und überlegen, was sind denn da sinnvolle Nachbedingungen?
Im Prinzip macht diese Methode ja eigentlich nichts anderes als
ein Element entgegennehmen
Und hinten an die Liste anhängen,
also wäre hier vielleicht eine sinnvolle Nachbedingung, das Element,
das ich als letztes eingefügt habe, soll auch zurückgeliefert werden,
wenn ich das letzte Element abfrage,
dass die Nachbedingungen werden halt,
genau wie die Vorbindigungen,
in Schnittstellenkommentar angegeben und zwar mit Add and Sure
Und wir wollen hier ja sicherstellen,
dass das letzte Element das eingegeben wurde, das Element,
das wir hier der Methode übergeben haben,
auch das letzte Element in der Liste ist.
Dementsprechend haben wir uns, können wir die Methode benutzen,
die wir uns hier unten geschrieben haben, Get Element.
Und wir wollen das an einer bestimmten Stelle haben und
das ist Get Card
Minus 1. Und das soll gleich element sein. Also nochmal
, wir holen uns das Element an der letzten Stelle.
Die Kardinalität ist ja die Anzahl der Elemente, die drin sind.
Wir fangen aber bei null an zu indizieren. Deswegen brauchen wir
hier unser Minus 1. Und hiermit überprüfen wir bei gleich,
mit gleichgleich, bei Referenzradiablen überprüfen wir halt auf Referenzgleichheit.
Das heißt, wir gucken, ob wir genau dieses Element
dann auch tatsächlich rauskriegen
Und um das zu überprüfen, schreiben wir uns jetzt einen Testfall.
Das heißt, wir gehen hier auf unser Default Packages New, J. Unit Test Case.
Da klicken wir drauf. Dann wollen wir überprüfen, ach ne,
wie nennen wir die Methode, die netten Methode nennen wir? String,
List, Test, das ist eigentlich so üblich,
wenn die Testmethoden genauso wie die Testklassen,
genauso wie die Klassen, halt nur mit Test dahinter,
Finish, dann haben wir hier jetzt schon den Rumpf von der Testmethode vorgefertigt,
dieses Adtest wird dafür benutzt, um die Methoden zu kennzeichnen,
die bei einem Test auch tatsächlich mit durchlaufen sollen.
Es kann ja durchaus sein,
dass es irgendwelche vorbereitenden Methoden oder Ähnliches gibt,
die eigentlich gar nicht mit getestet werden sollen,
die aber in dieser Testklasse mit drin sind.
Test ist jetzt kein besonders sinnvoller Name,
sondern nennen wir die Methode mal
Keine Ahnung. Neues Element ist am Ende der Liste.
Logischerweise erzeugen wir uns auch jetzt erstmal ein Exemplar,
der von uns geschriebenen und zu testen in Klasse.
Der Typ ist dann Stringlist. Nennen wir es einfach
mal List
Ja, mit Unterstrich. Gleich. New. Stringlist. Wir müssen hier auch nochmal,
wir sehen hier an dem Stern, das ist nicht gespeichert.
Ich klicke hier mal drauf, um alles zu speichern.
So, und jetzt wollen wir ja eigentlich wissen,
ob das Element, was wir als letztes eingefügt haben,
auch als letztes in der Liste stehen steht
Also nehmen wir unsere Liste, wenn ich hier auf Plus
gehe, dann bietet ihr mir auch gleich Apent an.
Da geben wir einen String ein. Der Klassiker, hallo
. Und das Gleiche machen wir nochmal. Und beim Klassiker
zu bleiben, Welt. Und jetzt wollen wir überprüfen,
ob das Letzte Element in der Liste jetzt auch Welt ist.
Wir haben hierfür auch in der Third. Und zwar ist
Third Equels. Und bei Tests ist es üblich,
dass man an den Anfang das erwartete schreibt,
also als erstes Element das erwartete, nämlich Welt.
Und danach das tatsächliche, und dann nehmen wir hier List
und da haben wir ja auch eine Methode Get Element,
Ja, und wir wollen das Element an der Indexposition 1 haben.
Ganz einfach, weil wir hier Hallo an die Indexposition null
eingefügt haben, Welt an die Indexposition 1 angefügt haben,
warum ist Andi Fan für okay
Okay, uns hat ein Import gefehlt, deswegen wurde das hier rot unterkringelt.
Jetzt wollen wir das Ganze nochmal überprüfen. Also wir wollen einfach
den Testfall laufen lassen. Dafür haben wir zwei Möglichkeiten.
Wir können hier auf die Testklasse mit rechts klicken, Run ass.
Jay Unit Test, dann würden sämtliche Testmethoden durchlaufen, die hier drin sind.
Wir haben nur eine, wir haben auch die Möglichkeit,
nur eine Testmethode, und zwar eine bestimmte Testmethode durchlaufen zu lassen.
Das ist, wenn wir hier rechts draufklicken und hier sagen,
Run ist Jay Unit Test und glücklicherweise wird der Test grün.
Das heißt also, wir haben jetzt,
wenn auch nur einen einzigen Testfall geschrieben, der uns überprüft,
ob das eingefügte Element auch tatsächlich am Ende der Liste ist,
Wir könnten noch einen zweiten Testfall schreiben, aber ich glaube,
das wird ein ganz klein bisschen knapp mit der Zeit.
Ihr werdet noch ziemlich viele Testfälle schreiben,
das kann euch also quasi so als Muster dienen.
Ich möchte nämlich mit euch auch noch eine Einstellung vornehmen,
weil diese Assoirsions müssen in der IDE überhaupt erstmal aktiviert werden.
Dazu gehen wir auf Window Preferences Java. Und dann installed,
I JREs, klicken das an,
gehen auf Edit und müssen hier an dieser Stelle minus EA eingeben,
eA-EA steht für Enable Assoirsions.
Damit haben wir dann im Prinzip ermöglicht,
dass diese Vorbedingungen nach Bedingungen
überhaupt überprüft werden können
Ich habe gedacht, ich zeige euch das ganz am Schluss.
Ihr müsst es, glaube ich,
auf dem Aufgabenblatt relativ weit am Anfang eingeben,
wenn wir jetzt auf Finish klicken,
dann funktioniert das dann auch mit den Assertions, zwar mit diesem hier.
Das war es auch schon fast. Das zweite Video ist offensichtlich
ein ganzes Stückchen kürzer geworden. Eine Sache möchte ich euch noch erzählen,
und zwar habe ich in der letzten Woche ja einen Shortcut gezeigt,
für das Formatieren, das war Altshift F.
Und ich möchte eigentlich mit euch jede Woche so einen Shortcut der Woche machen.
Ich packe das immer hier in so einen PDF rein,
was ich dann hochgeladen habe, das hier existiert schon.
Das sind so die Basisshortcuts, die irgendwie alle kennen,
mit denen man halt auch üblicherweise die ganze Zeit schon arbeitet.
Das hier ist jetzt der erste von der letzten Woche.
Heute kommt ein neuer dazu, das werde ich dann hier
in das PDF dann auch einfügen
Und dann könnt ihr euch das dann jedes Mal runterladen
und habt so eine kleine Liste an Shortcuts,
die euch das Leben so ein bisschen erleichtern sollen.
Der Shortcut von heute, dabei geht es darum,
dass ich manchmal vielleicht auch eine ganze Zeile löschen möchte,
wenn ich jetzt hier also quasi irgendeinen Unsinn reinschreibe,
dann möchte ich jetzt nicht hier jedes Mal draufklicken,
was das Ganze weg ist.
Vielleicht schreibe ich
auch in mehrere Zeilen Unsinn
Dann, wie gesagt, wird es relativ anstrengend, das Ganze wegzuklicken.
Wenn ich das jetzt hier markiere, mache Steuerung D,
dann kann ich eine ganze Zeile löschen. Anstatt halt,
wie gesagt, hier immer das alles so wegmachen zu müssen.
Und dann muss ich bis hier vorne klicken, bis die
Zeile weg ist. Und das ist auch mega nervig.
Und mit steuerem Weg geht das alles einfach auf einmal weg.
Ja, das war's von mir für heute. Ich werde
jetzt dafür sorgen, dass die Videos relativ schnell hochgeladen werden.
Ich bin so ein bisschen knapp mit der Zeit geworden.
Deswegen habe ich auch nur den einen Testfall gemacht.
Und wir sehen uns dann nächste Woche wieder.
Bis dann